Справочная информация:
У меня есть PDF, которые я генерирую программно. Мне нужно иметь возможность отправлять PDF напрямую на принтер с сервера (не через промежуточное приложение). На данный момент я могу выполнить все вышеперечисленное (сгенерировать PDF, отправить на принтер), но поскольку шрифты не встроены в PDF, принтер выполняет замену шрифта.
Почему шрифты не внедряются при генерации:
Я создаю PDF-файлы с использованием SQL Reporting Services 2008. Существует известная проблема со службами SQL Reporting Services, заключающаяся в том, что они не будут встраивать шрифты (если не выполняется ряд требований - http://technet.microsoft.com/en-us/library/ms159713%28SQL.100%29.aspx). Не спрашивайте меня, почему , PDF соответствует всем перечисленным требованиям MS, и шрифты все еще отображаются как не встроенные - нет никакого реального контроля над тем, внедрены ли шрифты, поэтому я согласился, что это не работает, и перешел. Предложенный обходной путь от Microsoft (http://blogs.msdn.com/b/donovans/archive/2007/07/20/reporting-services-pdf-renderer-faq.aspx в разделе «Когда службы Reporting Services будут выполнять встраивание шрифтов») - это публикация PDF-файла для встраивания шрифтов вручную.
Цель
Возьмите уже созданный PDF-документ, программно «откройте» его и вставьте шрифты, сохраните PDF-файл.
подход
Я указал на iTextSharp, но большинство примеров относится к версии Java, и у меня возникают проблемы с переводом на версию iTextSharp (я не могу найти документацию для iTextSharp).
Я работаю над этим сообщением для того, что мне нужно сделать: Вставить шрифт Itext в PDF .
Однако, судя по всему, я не могу использовать объект ByteArrayOutputStream. Кажется, он не может его найти. Я исследовал и исследовал, но никто, кажется, не говорит, в каком классе он находится или где я его нахожу, чтобы я мог включить его в операторы использования. Я даже взломал Reflector и, похоже, нигде не могу его найти.
Это то, что у меня есть, и оно компилируется и т. Д.
(результат - мой байт [] сгенерированного PDF).
PdfReader pdf = new PdfReader(result);
BaseFont unicode = BaseFont.CreateFont("Georgia", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
// the next line doesn't work as I need a ByteArrayOutputStream variable to pass in
PdfStamper stamper = new PdfStamper(pdf, MISSINGBYTEARRAYOUTPUTSTREAMVARIABLE);
stamper.AcroFields.SetFieldProperty("test", "textfont", unicode, null);
stamper.Close();
pdf.Close();
Так кто-нибудь может мне помочь с использованием iTextSharp для встраивания шрифтов в PDF или указать мне правильное направление?
Я более чем рад использовать любые другие решения, кроме iTextSharp, для достижения этой цели, но он должен быть бесплатным и использоваться бизнесом для внутреннего приложения (то есть Affero GPL).