在C#开发过程中,将PDF文件按页转换为高清图片是很多项目会遇到的需求,比如实现文档在线预览、提取PDF中的内容用于其他处理等。使用PDFiumViewer库可以高效完成这个任务,它基于成熟的PDFium渲染引擎,支持精准的页面解析和高清图像输出。

环境准备
首先需要在项目中引入PDFiumViewer相关的依赖包,推荐通过NuGet包管理器安装,需要安装的两个核心包如下:
- PDFiumViewer
- PDFiumViewer.Native.x86_64(根据项目运行平台选择对应架构的包,32位系统选择x86版本)
核心实现步骤
1. 加载PDF文件
使用PDFiumViewer.PdfDocument类加载本地的PDF文件,该类提供了操作PDF的核心方法。
2. 按页渲染图像
通过Render方法可以将指定页面渲染为图像,我们可以调整渲染的缩放比例来控制输出图像的分辨率,缩放比例越高,图像越清晰。
3. 保存图像到本地
将渲染得到的图像对象保存到指定路径,支持常见的图像格式如PNG、JPG等。
完整代码示例
以下是完整的按页转换PDF为高清图片的实现代码:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using PDFiumViewer;
namespace PdfToImageDemo
{
class Program
{
static void Main(string[] args)
{
// PDF文件路径
string pdfPath = @"D:test.pdf";
// 图片保存目录
string outputDir = @"D:pdf_images";
// 加载PDF文档
using (PdfDocument pdfDocument = PdfDocument.Load(pdfPath))
{
// 遍历PDF的每一页
for (int pageIndex = 0; pageIndex < pdfDocument.PageCount; pageIndex++)
{
// 设置渲染缩放比例,300表示300DPI,可根据需求调整,数值越高图像越清晰
float scale = 300f / 72f;
// 渲染当前页为图像
using (Image pageImage = pdfDocument.Render(pageIndex, (int)(pdfDocument.PageSizes[pageIndex].Width * scale), (int)(pdfDocument.PageSizes[pageIndex].Height * scale), true))
{
// 图片保存路径,按页码命名
string outputPath = System.IO.Path.Combine(outputDir, $"page_{pageIndex + 1}.png");
// 保存图像为PNG格式
pageImage.Save(outputPath, ImageFormat.Png);
Console.WriteLine($"第{pageIndex + 1}页转换完成,保存路径:{outputPath}");
}
}
}
Console.WriteLine("所有页面转换完成");
}
}
}
参数说明
| 参数 | 说明 |
|---|---|
| scale | 渲染缩放比例,PDF默认DPI是72,设置为300/72可以得到300DPI的高清图像,可根据需求调整数值 |
| pageIndex | 页面索引,从0开始,对应PDF的第一页 |
| ImageFormat | 图像保存格式,支持Png、Jpeg等常见格式,PNG格式无损更适合高清输出 |
注意事项
- 运行前需要确保输出目录已经存在,否则会抛出目录不存在的异常,可以在代码中添加目录创建的逻辑
- 如果PDF文件有密码保护,需要先解密才能正常加载和渲染
- 处理大尺寸或者页数很多的PDF时,注意及时释放图像和文档资源,避免内存占用过高
- 不同架构的PDFiumViewer.Native包不能混用,需要根据项目运行的目标平台选择对应的包
PDFiumViewer是开源免费的库,适合商业项目使用,但是需要注意PDFium引擎本身的开源协议要求,避免违反相关使用规定。
C#PDFiumViewerPDF转图片按页渲染修改时间:2026-07-04 14:21:23