27

ピクセルレベルの操作のために、PDFsharp .NET ライブラリを使用して PDF ページを画像としてエクスポートする方法は?

たとえば、 System.Drawing.BitMap.GetPixel() のようなもの

グラフィック/画像を書き込むために、PDFドキュメント内の空の領域(すべて白または任意の色)を見つけようとしています。

2010 年 6 月 9 日:

私はこれを試しましたが、うまくいきません。

次のコードが期待どおりに機能しないのはなぜですか?

Bitmap.GetPixel は常に 0 を返します。

//
// PdfSharp.Pdf.PdfDocument
// PdfSharp.Pdf.PdfPage
// PdfSharp.Drawing.XGraphics
// System.Drawing.Bitmap
//
string srcPDF = @"C:\hcr\test\tmp\file1.pdf";
PdfDocument pdfd = PdfReader.Open(srcPDF);
XGraphics xgfx = XGraphics.FromPdfPage(pdfd.Pages[0]);
Bitmap b = new Bitmap((int) pdfp.Width.Point, (int) pdfp.Height.Point, xgfx.Graphics);

int rgb = b.GetPixel(0, 0).ToArgb();
4

1 に答える 1

21

答えは PDFsharp FAQ リストにあります: http://www.pdfsharp.net/wiki/PDFsharpFAQ.ashx#Can_PDFsharp_show_PDF_files_Print_PDF_files_Create_images_from_PDF_files_3

PDFsharp は PDF ファイルを作成しますが、それらをレンダリングすることはできません。

呼び出し

Bitmap b = new Bitmap((int) pdfp.Width.Point, (int) pdfp.Height.Point, xgfx.Graphics);

ビットマップのどのビットも初期化せず、Graphics オブジェクトの DPI 設定を除いて、Graphics オブジェクトから何もコピーしません。グラフィックス オブジェクトは何かを描画しますが、何を描画したかを覚えておらず、 を呼び出して描画を再作成することはできませんnew Bitmap(...)。これは、Microsoft の Graphics クラスでは機能しません。また、PDFsharp の XGraphics クラスでも機能しません。

PDFsharp の XGraphics クラスを使用して PDF ページに描画したり、ビットマップ、プリンター、または画面に描画したりできます。PDF ページや Windows から取得できる任意の DC に描画できます。MigraDoc についても同様です。
したがって、同じ内容の PDF ファイルとビットマップを作成する場合は、PDFsharp と MigraDoc が役立ちます。

しかし、PDFsharp は、PDF ページをビットマップにレンダリングする方法を提供していません。

于 2010-06-10T15:03:29.470 に答える