FlowDocumentをPDFに変換して電子メールに添付することをどのように推奨しますか?FlowDocumentをPDFに変換するにはどうすればいいですか
FlowDocumentは動的で静的ではありません。
PDFをメモリに格納することができますが、ディスク上ではなくバイト[]で保存することができますが、それはネゴシエート可能です。
ありがとうございました!
FlowDocumentをPDFに変換して電子メールに添付することをどのように推奨しますか?FlowDocumentをPDFに変換するにはどうすればいいですか
FlowDocumentは動的で静的ではありません。
PDFをメモリに格納することができますが、ディスク上ではなくバイト[]で保存することができますが、それはネゴシエート可能です。
ありがとうございました!
私には2つの選択肢があります。
最初にNiPDFという独自のライブラリを使用するか、Word Interopを使用できます。いくつかの一時ストアから保存されたドキュメントをロードするためにOpen XML SDK
あなたは見つけることができ、さらに情報here
Seberix(http://www.siberix.com/)の「Report Writer for .NET」と呼ばれる製品を検討したいと思うかもしれません。そのAPIはFlowDocumentの背後にあるコードと似ていますが、私はあなたが「動的ではなく静的ではない」と言いたいと思っていると思います。 (しかし、私は違いがあると確信しています。悪魔は詳細です)。 Siberix.Report.Reportオブジェクトが作成されると
、
Siberix.Report.Report report = CreateMyPdfReport(); //You write this
Stream stream = new MemoryStream();
report.Publish(stream, Siberix.Report.FileFormat.PDF);
byte[] bytes = stream.ToArray();
は今のバイトは、データベースのテーブルまたは任意に保存することができます。
これは、手動プロセスではなくプログラムによって発生させることを想定しています。
方法1:AmyuniまたはPrimoPDFなどのPDFドライバをインストールします。目的のPrintTicket /ページサイズでFlowDocumentを印刷ドライバに印刷します。それから得られるPDFはかなり良い変換でなければなりません。これらのドライバの一部(Amyuniなど)には、このプロセスをプログラムで制御できるSDKがあります。
方法2: [名前を付けて保存]ダイアログボックスを使用せずにXPSドライバを使用してプログラムでXPSに印刷します。 Windows DDKには、これを簡単に作成できるサンプルがあります。次に、NiXPSやAdobe SDK(高価なので私はリンクを投稿しません)やGhostXPSなどのXPS to PDFコンバータを使用して、XPSを直接PDFに変換します。
方法3:This oneのような方法を使用してフロードキュメントを直接XPSに変換し、上記のようなXPS to PDFコンバータを使用します。
免責事項:私はこれらの企業またはその競合他社のいずれに対しても動作しません。私はAdobe SDK、Amyuniプリンタ、さまざまなXPSトリックをかなり成功裏に使用しました。 100%の精度で変換する方法はありません。
免責事項:私はXamlToPDFライブラリの作者ですが、どのような種類の使用でも無料です。
http://xamltopdf.codeplex.com/
PDFを作成するために、その非常に簡単、それは同様に、表や画像をサポートしています。
私は、PDFCreatorプリンタドライバでこれを動作させることができました。これを動作させるにはドライバをインストールする必要があるため、一部の人にとっては理想的な解決策ではありません。利用可能なCOMインターフェイスがあります。コードは多かれ少なかれ次のようになります:
PDFCreator.clsPDFCreator _PDFCreator;
PDFCreator.clsPDFCreatorError pErr;
if (_PDFCreator.cStart(parameters, false))
{
_PDFCreator.cClearCache();
_PDFCreator.set_cOption("UseAutosave", 1);
_PDFCreator.cPrinterStop = false;
}
_PDFCreator.set_cOption("AutosaveFilename", file);
_PDFCreator.set_cOption("AutosaveDirectory", folder);
PrintDialog printDialog = new PrintDialog();
printDialog.PrintDocument(((IDocumentPaginatorSource)flowDoc).DocumentPaginator, "Report");
ああ、私はこのケースではサードパーティのコントロールを使用して完全に大丈夫です。 – Joe