7

FixedDocumentを使用していくつかのレポートを表示および印刷する単純なWPFアプリがあります。

iTextSharpなどの無料でオープンなソリューションを使用して、そこからPDFを生成するにはどうすればよいですか?

4

4 に答える 4

7

XPS ドキュメントとしても知られる WPF FixedDocument は、PDF よりも確実に改善されています。PDF にはない多くの機能があります。ほとんどの場合、ドキュメントを PDF ではなく XPS として配布することをお勧めしますが、たとえば、PDF のみをサポートするデバイスでドキュメントを開く必要がある場合など、XPS から PDF に変換する必要がある場合があります。残念ながら、CutePDF や BullzipPDF など、XPS から PDF に変換するためのほとんどの無料ツールは、プリンター ドライバーのインストールを必要とするか、オープン ソースではありません。

優れたオープン ソース ソリューションは、GhostPDL の一部である「gxps」ツールを使用することです。GhostPDL は Ghostscript プロジェクトの一部であり、GPL2 の下でライセンスされたオープンソースです。

  1. http://ghostscript.com/releases/ghostpdl-8.71.tar.bz2から GhostPDL をダウンロードしてコンパイルします。
  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
于 2010-08-18T18:58:19.917 に答える
1

簡単ですが、おそらく最も効率的な方法ではない簡単な方法は、Fixed ドキュメントを画像にレンダリングし、iTextSharp を使用して画像を PDF に埋め込むことです。

私は以前にこの方法で成功しました。最初に、コントロール プリミティブ (形状) を同等の PDF に変換しようとしましたが、これは難しすぎることがわかりました。

于 2010-08-11T03:54:03.783 に答える
0

WPFから画像に取り込むことができる場合は、この記事のようにiTextSharpにインポートできます。ファイルシステムをMemoryStreamに書き込んでから、FileStreamを使用する代わりにそれを使用すると、ファイルシステムをまとめて回避することもできます。

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

于 2010-08-18T00:50:54.537 に答える
0

IF you want to do it programatically, your Best bet would be the following path XPS (Fixed Document) -> Print to PS -> Use Ghostscript to read the PS and convert to PDF. If you dont care about reading the PDF back in the code, you can print to any one of the free PDF printers to which you can pass the destination path. This way your target PDF file will still be searchable if you have any test in your report.

于 2010-08-18T18:55:48.693 に答える