Фон:
У меня есть 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).