C#使用PdfiumViewer库处理PDF文件的实践方法
1、简述
在 C# 项目中处理 PDF 是一个高频但复杂的需求,例如:
- 预览 PDF 页面
- 将 PDF 转为图片(JPG / PNG / TIFF)
- 获取 PDF 页数、尺寸信息
- 提取文本内容
- 配合 OCR、归档、批处理系统使用
相比 iText(偏编辑/生成)或 PDFBox(Java),
PdfiumViewer 更适合“解析 + 渲染”场景,尤其在 Windows 桌面程序(WinForms / WPF)中表现非常优秀。
2、什么是 PdfiumViewer?
PdfiumViewer是一个基于Google PDFium 引擎的 .NET 封装库,主要特点:
- 高性能 PDF 渲染
- 原生支持 PDF → Bitmap
- API 简洁,易上手
- 非商业许可(免费)
- 仅支持 Windows(依赖 pdfium.dll)
适合以下场景:
- WinForms / WPF PDF 预览器
- PDF 批量转图片
- PDF 页面级解析
- 与 OpenCV / OCR(Tesseract)联动
PdfiumViewer 的核心能力:
| 功能 | 是否支持 |
|---|---|
| 获取 PDF 页数 | ✅ |
| 渲染为 Bitmap | ✅ |
| 指定 DPI 渲染 | ✅ |
| 提取文本 | ✅ |
| 页面裁切 | ✅ |
| 编辑 PDF | ❌(非设计目标) |
3、安装 PdfiumViewer
1、NuGet 安装
1 |
|
2、引入 pdfium.dll(关键)
PdfiumViewer必须依赖 pdfium.dll:
- x86 / x64 需与程序一致
常用来源:
- PdfiumViewer.Native.x86
- PdfiumViewer.Native.x64
推荐方式:
1 |
|
WinForms / WPF / Console 都适用
4、实践样例
1 2 3 4 5 6 7 |
|
这是所有 PDF 处理流程的起点。
实战一:PDF 渲染为 Bitmap(核心功能)
单页转图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
参数说明:
| 参数 | 含义 |
|---|---|
| pageIndex | 从 0 开始 |
| dpiX / dpiY | 分辨率(建议 200–300) |
| RenderFlags | 是否包含注释 |
实战二:PDF 全量转图片(批量处理)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
常用于:
- PDF → OCR
- PDF → 归档图片
- PDF → OpenCV 图像处理流水线
实战三:获取 PDF 页面尺寸(像素 / 物理尺寸)
1 2 3 4 5 6 7 8 |
|
PDF 中单位是Point(1 pt = 1/72 inch)
转为像素:
1 2 3 |
|
对齐 OpenCV、图像裁切时非常关键。
实战四:提取 PDF 文本内容
1 2 3 4 5 6 |
|
注意事项:
- 仅适用于文本型 PDF
- 扫描件(图片 PDF)需 OCR
- 表格结构会被打平
常见用途:
- 关键字定位
- 文档分类
- 索引构建
实战五:结合 WinForms 显示 PDF 页面
1 2 3 4 5 6 7 8 9 10 |
|
实际项目中可实现:
- 上一页 / 下一页
- 缩放
- 滚动预览
实战六:PDF 页面裁切后渲染(区域提取)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
常用于:
- 表格区域识别
- 公章 / 签名区域截取
- OCR 局部增强
5、总结
PdfiumViewer 是 C# 世界中处理 PDF 解析与渲染的利器:
- 简单
- 高效
- 稳定
- 非商业免费
如果你的项目涉及:
- PDF → 图片
- OCR 前处理
- WinForms / WPF 桌面工具
- 批量文档处理
PdfiumViewer 是非常值得优先选择的方案。
