iTextSharp для генерации PDF от WPF FixedDocument

У меня есть простое приложение WPF, которое отображает и печатает некоторые отчеты с FixedDocument.

Как может генерировать PDF от этого, с бесплатным и открытым решением, таким как iTextSharp?

7
задан leo.Mayer 2 August 2010 в 08:29
поделиться

4 ответа

Фиксированный документ WPF, также известный как документ XPS, является явным улучшением по сравнению с PDF. У него много возможностей, которых не хватает PDF. В большинстве случаев лучше распространять документ как XPS, чем PDF, но иногда необходимо преобразовать из XPS в PDF, например, если вам нужно открыть документ на устройствах, которые поддерживают только PDF.К сожалению, большинство бесплатных инструментов для преобразования из XPS в PDF, таких как CutePDF и BullzipPDF, требуют установки драйвера принтера или не имеют открытого исходного кода.

Хорошим решением с открытым исходным кодом является использование инструмента «gxps», входящего в состав GhostPDL. GhostPDL является частью проекта Ghostscript и имеет открытый исходный код под лицензией GPL2.

  1. Загрузите GhostPDL с http://ghostscript.com/releases/ghostpdl-8.71.tar.bz2 и скомпилируйте его.
  2. Скопируйте исполняемый файл gxps.exe в свой проект как Content и вызовите его из своего кода с помощью Process.Start.

Ваш код может выглядеть так:

string pdfPath = ... // Path to place PDF file

string xpsPath = Path.GetTempPath();
using(XpsDocument doc = new XpsDocument(xpsPath, FileAccess.Write))
  XpsDocument.CreateXpsDocumentWriter(doc).Write(... content ...);

Process.Start("gxps.exe",
              "-sDEVICE=pdfwrite -sOutputFile=" +
                  pdfPath +
                  "-dNOPAUSE " +
                  xpsPath).WaitForExit();

// Now the PDF file is found at pdfPath
7
ответ дан 7 December 2019 в 05:16
поделиться

Простой способ, который является легким, но, вероятно, не самым эффективным, - это преобразовать фиксированный документ в изображение, а затем встроить изображение в PDF-файл с помощью iTextSharp.

Я делал это раньше успешно. Первоначально я пытался преобразовать примитивы управления (формы) в эквиваленты PDF, но это оказалось слишком сложно.

1
ответ дан 7 December 2019 в 05:16
поделиться

Если вы можете получить его в образ из WPF, вы можете импортировать его в iTextSharp, как это делается в этой статье. Вы даже можете полностью избежать файловой системы, если запишете ее в MemoryStream, а затем используете ее вместо FileStream.

http://www.mikesdotnetting.com/Article/87/iTextSharp-Working-with-images

0
ответ дан 7 December 2019 в 05:16
поделиться

ЕСЛИ вы хотите сделать это программно, лучшим вариантом будет следующий путь: XPS (фиксированный документ) -> Печать в PS -> Используйте Ghostscript для чтения PS и преобразования в PDF. Если вам не нужно читать PDF-файл обратно в коде, вы можете распечатать его на любом из бесплатных PDF-принтеров, на который вы можете передать путь назначения. Таким образом, ваш целевой PDF-файл будет по-прежнему доступен для поиска, если в вашем отчете есть какой-либо тест.

0
ответ дан 7 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: