Фиксированный документ WPF, также известный как документ XPS, является определенным улучшением по сравнению с PDF.У него много возможностей, которых нет в PDF.В большинстве случаев лучше распространять документ в формате XPS, а не в формате PDF, но иногда необходимо выполнить преобразование из XPS в PDF, например, если вам нужно открыть документ на устройствах, которые поддерживают только PDF.К сожалению, большинство бесплатных инструментов для преобразования из XPS в PDF, таких как CutePDF и BullzipPDF, требуют установки драйвера принтера или не являются открытым исходным кодом.
Хорошим решением с открытым исходным кодом является использование инструмента "gxps", которыйчасть GhostPDL.GhostPDL является частью проекта Ghostscript и имеет открытый исходный код по лицензии GPL2.
- Загрузите GhostPDL из http://ghostscript.com/releases/ghostpdl-8.71.tar.bz2 и скомпилируйте его.
- Скопируйте исполняемый файл gxps.exeв ваш проект как Контент и вызовите его из своего кода, используя 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