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

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

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

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

您可以下载该库的二进制文件或使用其NuGet包。 要在没有评估 模式限制的情况下试用 Docotic.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 = ..;
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 方法来生成指定宽 度或高度的缩略图。

将 PDF 转换为 .NET 中的黑白或灰度图像

该库可以将 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.SetGrayscale 之一, JpegImageCompressionOptions.SetGrayscale, TiffImageCompressionOptions.SetGrayscale 方法如以下代码片段所示:

PdfDrawOptions options = ..;
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# 代码将 256x256 点区域的图像保存在 PDF 页面的左上角:

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 到图像转换有疑问,请联系我们