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 常见问题列表中找到: 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 页面呈现为位图的方法。

于 2010-06-10T15:03:29.470 回答