如何使用PDFsharp .NET库将PDF页面导出为图像?

时间:2010-06-08 09:03:57

标签: .net image pdf bitmap pdfsharp

如何使用PDFsharp .NET库将PDF页面导出为图像,以进行像素级操作?

例如,类似于System.Drawing.BitMap.GetPixel()

我试图在PDF文档中找出空白区域(全白或任何颜色),以编写一些图形/图像。

09,2010年6月:

我试过这个,但它没有用。

为什么以下代码无法按预期工作?

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

1 个答案:

答案 0 :(得分:17)

答案可以在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对象复制任何内容,但Graphics对象的DPI设置除外。图形对象会绘制内容,但它们不记得绘制的内容,也无法在调用new Bitmap(...)时重新创建绘图。这不适用于Microsoft的Graphics类,这也不适用于PDFsharp的XGraphics类。

PDFsharp中的XGraphics类可用于在PDF页面上绘图,它可用于在位图,打印机或屏幕上绘图 - 它可以在PDF页面和任何可从Windows获得的DC上绘制。 MigraDoc也是如此 因此,如果您想创建具有相同内容的PDF文件和位图,PDFsharp和MigraDoc可以提供帮助。

但是PDFsharp没有提供任何方法将PDF页面呈现为位图。