2012-02-07 19 views
4

FlowDocumentをPDFに変換して電子メールに添付することをどのように推奨しますか?FlowDocumentをPDFに変換するにはどうすればいいですか

FlowDocumentは動的で静的ではありません。

PDFをメモリに格納することができますが、ディスク上ではなくバイト[]で保存することができますが、それはネゴシエート可能です。

ありがとうございました!

+0

ああ、私はこのケースではサードパーティのコントロールを使用して完全に大丈夫です。 – Joe

答えて

3

私には2つの選択肢があります。

最初にNiPDFという独自のライブラリを使用するか、Word Interopを使用できます。いくつかの一時ストアから保存されたドキュメントをロードするためにOpen XML SDK

  • 使用Wordの相互運用機能を使用して、DOCXファイルへ

    1. 保存FlowDocument
    2. は、名前を変更することを忘れないで(再びWdSaveFormat保存
    3. wdFormatPDFに原稿をセットPDFへのファイル)

    あなたは見つけることができ、さらに情報here

  • +0

    NiPdfはFixedDocumentsでのみ機能します。私は、FlowDocumentを取り込むソリューションが必要です。 – Joe

    +0

    サイトでは誤解を招く恐れがあります.NiPDFを使用すると、ビジュアルをPDFに変換することができます... FlowDocumentビジュアルを取得するのを止めるものは何もありません。 –

    +2

    ステップ1は気になりません! – TheZenker

    0

    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(); 
    

    は今のバイトは、データベースのテーブルまたは任意に保存することができます。

    3

    これは、手動プロセスではなくプログラムによって発生させることを想定しています。

    方法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%の精度で変換する方法はありません。

    +1

    [Amyuni PDF Creator .Net](http://www.amyuni.com/en/developer/pdfcreator/features)は、XPSからPDFに変換することもできます。プラスとして、仮想プリンタは必要ありませんインストールする。 *免責事項:私はAmyuni Technologies * – yms

    +1

    のために働いています。方法3をお勧めします。XPSへのFlowDocumentは、ほとんどフォーマットを失うことなく行うことができます。 XPSからPDFの品質は、使用されるツールによって異なる場合があります。 – TheZenker

    2

    免責事項:私はXamlToPDFライブラリの作者ですが、どのような種類の使用でも無料です。

    http://xamltopdf.codeplex.com/

    PDFを作成するために、その非常に簡単、それは同様に、表や画像をサポートしています。

    0

    私は、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"); 
    
    関連する問題