Как встраивать шрифты в существующий PDF?

Справочная информация:

У меня есть 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 в разделе «Когда будет Службы внедряют шрифты ») заключается в последующей обработке PDF-файла для встраивания шрифтов вручную.

Цель 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 в разделе «Когда будет Службы внедряют шрифты ») заключается в последующей обработке PDF-файла для встраивания шрифтов вручную.

Цель 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 в разделе «Когда будет Службы внедряют шрифты ») заключается в последующей обработке PDF-файла для встраивания шрифтов вручную.

Цель Возьмите уже сгенерированный PDF-документ, программно «откройте» его и вставьте шрифты, повторно сохраните PDF.

Подход Меня указали на iTextSharp, но большинство примеров относятся к версии Java, и у меня возникли проблемы с переводом на версию iTextSharp (я не могу найти никакой документации для iTextSharp).

Я работаю над этим сообщением, для чего Мне нужно сделать: Itext встраивать шрифт в PDF .

Однако, хоть убей, я не могу использовать объект ByteArrayOutputStream. Кажется, не может найти. Я исследовал и исследовал, но, похоже, никто не говорит, в каком классе он находится или где я его нахожу, поэтому я могу включить его в операторы using. Я даже взломал 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).

28
задан Community 23 May 2017 в 11:33
поделиться