C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# PdfiumViewer处理PDF文件

C#使用PdfiumViewer库处理PDF文件的实践方法

作者:拾荒的小海螺

PdfiumViewer 是一个基于 Google PDFium 引擎 的 .NET 封装库,在 C# 项目中处理 PDF 是一个高频但复杂的需求,因此本文介绍了C#中使用PdfiumViewer库处理PDF文件的实践方法,需要的朋友可以参考下

1、简述

在 C# 项目中处理 PDF 是一个高频但复杂的需求,例如:

相比 iText(偏编辑/生成)或 PDFBox(Java),
PdfiumViewer 更适合“解析 + 渲染”场景,尤其在 Windows 桌面程序(WinForms / WPF)中表现非常优秀。

2、什么是 PdfiumViewer?

PdfiumViewer 是一个基于 Google PDFium 引擎 的 .NET 封装库,主要特点:

适合以下场景:

PdfiumViewer 的核心能力:

功能是否支持
获取 PDF 页数
渲染为 Bitmap
指定 DPI 渲染
提取文本
页面裁切
编辑 PDF❌(非设计目标)

3、安装 PdfiumViewer

1、NuGet 安装

dotnet add package PdfiumViewer

2、引入 pdfium.dll(关键)

PdfiumViewer 必须依赖 pdfium.dll

常用来源:

推荐方式:

dotnet add package PdfiumViewer.Native.x64

WinForms / WPF / Console 都适用

4、实践样例

using PdfiumViewer;

using (var document = PdfDocument.Load("sample.pdf"))
{
    int pageCount = document.PageCount;
    Console.WriteLine($"PDF 页数:{pageCount}");
}

这是所有 PDF 处理流程的起点。

实战一:PDF 渲染为 Bitmap(核心功能)

单页转图片

using PdfiumViewer;
using System.Drawing;

using (var document = PdfDocument.Load("sample.pdf"))
{
    int pageIndex = 0;

    // 300 DPI 高清渲染
    var image = document.Render(
        pageIndex,
        300,
        300,
        PdfRenderFlags.Annotations
    );

    image.Save("page1.png", System.Drawing.Imaging.ImageFormat.Png);
}

参数说明:

参数含义
pageIndex从 0 开始
dpiX / dpiY分辨率(建议 200–300)
RenderFlags是否包含注释

实战二:PDF 全量转图片(批量处理)

using PdfiumViewer;
using System.Drawing.Imaging;

void ConvertPdfToImages(string pdfPath, string outputDir)
{
    using var document = PdfDocument.Load(pdfPath);

    Directory.CreateDirectory(outputDir);

    for (int i = 0; i < document.PageCount; i++)
    {
        using var image = document.Render(i, 300, 300, PdfRenderFlags.Annotations);
        string path = Path.Combine(outputDir, $"page_{i + 1}.jpg");
        image.Save(path, ImageFormat.Jpeg);
    }
}

常用于:

实战三:获取 PDF 页面尺寸(像素 / 物理尺寸)

using PdfiumViewer;

using var document = PdfDocument.Load("sample.pdf");

var size = document.PageSizes[0];

Console.WriteLine($"宽:{size.Width} pt");
Console.WriteLine($"高:{size.Height} pt");

PDF 中单位是 Point(1 pt = 1/72 inch)

转为像素:

int dpi = 300;
int widthPx = (int)(size.Width / 72 * dpi);
int heightPx = (int)(size.Height / 72 * dpi);

对齐 OpenCV、图像裁切时非常关键。

实战四:提取 PDF 文本内容

using PdfiumViewer;

using var document = PdfDocument.Load("sample.pdf");

string text = document.GetPdfText(0);
Console.WriteLine(text);

注意事项:

常见用途:

实战五:结合 WinForms 显示 PDF 页面

using PdfiumViewer;

PdfDocument document = PdfDocument.Load("sample.pdf");

pictureBox1.Image = document.Render(
    0,
    pictureBox1.Width,
    pictureBox1.Height,
    true
);

实际项目中可实现:

实战六:PDF 页面裁切后渲染(区域提取)

using PdfiumViewer;
using System.Drawing;

using var document = PdfDocument.Load("sample.pdf");

var pageSize = document.PageSizes[0];

RectangleF crop = new RectangleF(
    0,
    0,
    pageSize.Width / 2,
    pageSize.Height / 2
);

using var image = document.Render(
    0,
    300,
    300,
    crop,
    PdfRenderFlags.None
);

image.Save("crop.png");

常用于:

5、总结

PdfiumViewer 是 C# 世界中处理 PDF 解析与渲染的利器

如果你的项目涉及:

PdfiumViewer 是非常值得优先选择的方案

以上就是C#使用PdfiumViewer库处理PDF文件的实践方法的详细内容,更多关于C# PdfiumViewer处理PDF文件的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文