2011-09-16 19 views
4

私は、スクリーン上のレンダリングコントロールと印刷に使用されている2Dグラフィックスをたくさん持っています。サードパーティ製のレポートツールやシェルフコントロールでは不可能なかなりカスタムのグラフィックスです。C#からSystem.Drawing.GraphicsをPDFに書き込む方法はありますか?

プログラムは印刷された内容のPDFファイルを生成することができますが、私はそれを書きましたが、私は不正行為をしてGraphicsオブジェクトをメモリイメージに印刷してPDFページに埋め込みます。

ユーザーが見つけた文書を電子メールで送信しているため、文書が大きすぎます。

iTextを使用してPDFを最初から書き始めましたが、System.Drawing.GraphicsのコンテンツをPDFに直接取り込む方法はありますか? iTextの動作とグラフィックスの動作は全く異なります。

+0

無料のライブラリではありませんが、[Windows Forms Infragistics.Documents Control](http://www.infragistics.com/dotnet/netadvantage/winforms/infragisticsdocuments.aspx#Overview)は、簡単にPDFを作成する方法を提供します資料。これは開発ライセンスで、無料でテストできます。 – JPBlanc

答えて

3

このライブラリを試してみてくださいhttp://www.pdfsharp.com/PDFsharp/

編集:ライブラリーの上には、あなたがあなたのWMF(EMF)のグラフィックスを描画するものを指示し、その後、iTextのにそれを渡すことができhttp://www.pdfsharp.net/

+0

かなりの労力で、これは完全に機能します。私は実際にすべてを複製して微妙な変更を加えなければなりませんでしたが、iTextよりはるかに簡単な私の数学の整合性を保ちます。図書館は数年後に更新されていないので、必要に応じて投稿することができます:) –

+0

これはかなりの作業です。 XPSを使用するのは簡単でしたが、私のクライアントはPDFを主張しています。まぁ! ...それはあなたがプッシュして、働いている解決策を知っているのを助けました:) – noelicus

1

に移動されました。

+0

私はこのアプローチを試していませんでしたが、これはPDFシャープを使用する実行可能な選択肢のように見えます。私は後でそれを調べるかもしれませんが、答えに感謝します。 –

1

System.Drawing.Imageがあることを意味しますか?もしそうなら、それをiTextSharp.text.Image.GetInstance()に直接渡すことができます。この場合、iTextSharp Imageオブジェクトが得られます。それ以外の場合は、PDFキャンバスに直接描画することもできます(see this post)。

+0

私は前述のようにイメージの方法を使用していましたが、私のファイルサイズが大きすぎるため、直接描画を行う必要があります。はい、GDI +システムとはまったく異なっていますが、最初からすべてを始める必要がありますが、私はGDI +のような書き方を探していましたが、Eugenの答えはちょうどチケットだったと言いました。 –

0

1つの(ハッキー)方法は、単にthis oneのようなPDFプリンタドライバを使用することです。印刷APIを通じて同じGDI +コードを再利用することができます。

+0

私はこのアプローチを検討しましたが、このアプローチにはいくつかの注意点があります.Hackyについては言及していますが、ファイルを保存せず、ユーザーの介入なしに電子メールで送信されるドキュメントを書きます。また、私たちがクリック一回使用しているので望ましくないマシンにドライバをインストールする必要があります。実行可能な代替方法ですが、ありがたいことです。 –

関連する問題