如何使用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();
答案 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页面呈现为位图。