该页面可以包含自动翻译的文本。

在 C# 和 VB.NET 中将 PDF 转换为图像

有些情况下,你需要将 PDF 转换为图像。例如,你可能需要从 PDF 创建缩略图,或者对某些 PDF 文档执行光学字符识别(OCR)。

你可以使用 Docotic.Pdf 库 在 C# 和 VB.NET 项目中将 PDF 文档转换为图像。该库 100% 托管,无外部依赖。它不使用 System.Drawing.dll 和 GDI+ 进行 PDF 光栅化。因此,你将在 Windows、Linux、macOS、iOS 和 Android 上获得一致的输出。

该库可在 NuGet 和我们的网站上获取。请在 下载 C# .NET PDF 库 页面获取该库和免费的限时许可证密钥。

Docotic.Pdf 提供了许多 PDF 到图像转换选项。它还可以渲染和打印 PDF 文档。让我们看看如何使用 Docotic.Pdf 库将 PDF 转换为图像。

在 C# 和 VB.NET 中将 PDF 转换为图像

将 PDF 页面另存为 PNG、JPG 或 TIFF 图像

Docotic.Pdf 库允许你将 PDF 页面转换为 PNG、JPEG 或 TIFF 图像。你可以将结果图像写入流或文件。此 C# 代码片段将 PDF 页面保存为带白色背景和 300x300 dpi 分辨率的 PNG 图像:

using BitMiracle.Docotic.Pdf;

using var pdf = new PdfDocument("your_document.pdf");

PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

for (int i = 0; i < pdf.PageCount; ++i)
    pdf.Pages[i].Save($"page_{i}.png", options);

你可以使用 PdfDrawOptions.Compression 属性指示库生成 JPEG 或 TIFF 图像,而不是 PNG。下面的代码片段演示如何切换为生成 JPEG 图像:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateJpeg();

相关的 C# 和 VB.NET 示例可在 GitHub 上 获取。

在 .NET 中将 PDF 文档转换为多页 TIFF

你可以使用 PdfDocument.SaveAsTiff 方法将整个文档保存为多页 TIFF 图像。下面是一个将 PDF 转换为 TIFF 的 C# 示例:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

pdf.SaveAsTiff("result.tiff", options);

从 GitHub 下载并试用 将 PDF 保存为多页 TIFF 示例代码。那里提供 C# 和 VB.NET 版本。

从 PDF 创建缩略图

借助 Docotic.Pdf 库,你可以从 PDF 页面生成缩略图。此 C# 示例从给定 PDF 的第一页创建一个 200x200 像素的缩略图,并将该缩略图写入内存流:

using var pdf = new PdfDocument("document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateFitSize(new PdfSize(200, 200), false);
options.BackgroundColor = new PdfGrayColor(100);

using var stream = new MemoryStream();
pdf.Pages[0].Save(stream, options);

你也可以使用 PdfDrawOptions.CreateFitWidthPdfDrawOptions.CreateFitHeight 方法生成指定宽度或高度的缩略图。

在 .NET 中将 PDF 转换为二值或灰度图像

该库可以将 PDF 文档转换为二值(黑白)TIFF 图像。此示例展示了如何在 C# 中从 PDF 文档生成二值 TIFF 图像:

using var pdf = new PdfDocument("colored.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);
options.Compression = ImageCompressionOptions.CreateTiff().SetBitonal();

pdf.SaveAsTiff("bitonal.tiff", options);

你还可以在使用 TiffImageCompressionOptions.SetBitonalThreshold 方法时指定阈值级别。阈值级别定义了如何将灰度、RGB 或 CMYK 颜色转换为黑白。

Docotic.Pdf 也支持将 PDF 转换为灰度 PNG、JPG 或 TIFF 图像。只需像下面的代码片段那样使用 PngImageCompressionOptions.SetGrayscaleJpegImageCompressionOptions.SetGrayscaleTiffImageCompressionOptions.SetGrayscale 方法之一:

PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreatePng().SetGrayscale();

缩放 PDF

PdfDrawOptions.CreateZoom 方法允许你获取具有指定缩放级别的 PDF 页面图像。此 C# 示例将 PDF 页面转换为 400% 缩放级别的图像:

using var pdf = new PdfDocument(@"document.pdf");
PdfDrawOptions options = PdfDrawOptions.CreateZoom(400);
pdf.Pages[0].Save("zoomed.png", options);

PDF 到图像的部分渲染

你可能只需要将 PDF 页面的某一部分转换为图像。例如,将大型 PDF 页面拆分为切片。或者裁剪掉一些不需要的内容。

以下 C# 代码将 PDF 页面左上角 256x256 点区域保存为图像:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.BackgroundColor = new PdfRgbColor(255, 255, 255);

PdfPage page = pdf.Pages[0];
PdfBox cropBoxBefore = page.CropBox;

page.CropBox = new PdfBox(0, cropBoxBefore.Height - 256, 256, cropBoxBefore.Height);
page.Save("part.png", options);

page.CropBox = cropBoxBefore;

瓦片式 PDF 到图像渲染

Docotic.Pdf 内置支持将 PDF 瓦片式渲染为 TIFF。当你需要使用固定内存量处理大型 PDF 页面时,这种方法很有用。

例如,你的 PDF 文档包含一个大小为 10000x10000 点的页面。将此页面按 300 DPI 分辨率常规转换为 RGB 图像,需要超过 1 Gb(= 10000 * 10000 * 3 * 300 / 72.0 字节)的内存用于中间未压缩 RGB 图像数据。使用 1024x1024 瓦片进行渲染时,你可以将未压缩 RGB 图像数据的内存消耗限制在 12 Mb(= 1024 * 1024 * 3 * 300 / 72.0 字节)。

请注意,瓦片式 PDF 到图像转换比常规转换更慢。对于每个瓦片,库都需要处理 PDF 页面的所有操作,即使其中一些不会影响当前瓦片。

此 C# 示例演示如何使用 512x512 瓦片将 PDF 转换为图像:

using var pdf = new PdfDocument("large.pdf");
PdfDrawOptions options = PdfDrawOptions.Create();
options.Compression = ImageCompressionOptions.CreateTiff().SetTileSize(512, 512);
options.BackgroundColor = new PdfGrayColor(100);
options.HorizontalResolution = 300;
options.VerticalResolution = 300;

pdf.Pages[0].Save("tiled.tiff", options);

结论

Docotic.Pdf 库 在 .NET 中提供了多种 PDF 到图像转换选项。你可以将 PDF 页面转换为全尺寸或缩略图图像,输出格式包括 PNG、TIFF 和 JPEG。你还可以将 PDF 文档保存为多页 TIFF 文件。该库还可以生成二值图像和灰度图像。

从 GitHub 下载并试用 PDF 到图像 示例。

如果你对 PDF 到图像转换有疑问,请联系我们