前言
PDF的实际应用虽然广泛,但考虑到接收设备不一定有支持的阅读器, 将PDF导出为图片格式可能会更方便发送和查阅。另外,图片格式也更易于我们进行二次编辑。下面我所要介绍的这个将PDF转换为图像的方法可以确保转换后的图片与原始PDF文件的外观一致,包括内容的位置和样式等。只需要简单几行代码就可以将PDF快速导出成你想要的图片格式。
准备工作
这个方法将用到的是 Free Spire.PDF for .NET组件,支持在多种.NET应用程序中处理PDF。
具体安装方法如下(Visual Studio 2022为例):
方法一:通过 NuGet安装Free Spire.PDF for .NET。
打开 Visual Studio创建新项目。
依次选择工具>NuGet包管理器>程序包管理器控制台。
然后执行命令: PM> Install-Package FreeSpire.PDF
方法二:在程序中手动导入Spire.pdf.dll文件。
将 Free Spire.PDF for .NET 下载到本地,解压并安装。
打开 Visual Studio创建一个新项目。
在“解决方案资源管理器”中右键点击“引用”,再依次选择“添加引用”> “浏览”。
找到安装路径下BIN文件夹中的dll文件,点击“OK”。
这里个人更推荐第二种方法,更方便查找各种demo。
还有一点需要注意的是,这个免费的组件在转换时有一定页数的限制。如果你的文档比较大,也可以直接下载商业版,申请一个临时许可证来试用一段时间。
下载链接: Spire.PDF for .NET
PDF文档转图片
代码逻辑
整个代码的逻辑很简单,首先导入所需要的外部库和命名空间。然后创建一个文档实例并加载需要转换的PDF文档。然后循环遍历文档的每一页,调用PdfDocument下的SaveAsImage()方法将每一页都转换为图片。图片格式根据自身需要指定即可。
示例代码
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDFtoImage
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument实例
PdfDocument pdf = new PdfDocument();
//加载需要转换的PDF文档
pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.pdf");
//循环遍历每个页面
for (int i = 0; i < pdf.Pages.Count; i++)
{
//将所有页面转换为图像并设置图像Dpi
Image image = pdf.SaveAsImage(i, PdfImageType.Bitmap, 500, 500);
//设置图像格式
String file = String.Format("C:\\Users\\Administrator\\Desktop\\Images\\Image-{0}.png", i);
image.Save(file, ImageFormat.Png);
}
}
}
}
效果图
PDF的某一页转图片
代码逻辑
与上述代码类似,只是转换某一页时,不再需要遍历整个文档,只需要通过索引获取页面就可以。唯一需要注意的是,这里的索引是从0开始计算的。最后指定图片格式即可。
示例代码
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System.Drawing.Imaging;
namespace PDFtoImage
{
class Program
{
static void Main(string[] args)
{
//创建一个PdfDocument实例
PdfDocument pdf = new PdfDocument();
//加载需要转换的PDF文档
pdf.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.pdf");
//将第一页转换为图像并设置图像Dpi
Image image = pdf.SaveAsImage(0, PdfImageType.Bitmap, 500, 500);
//设置图像格式
image.Save("C:\\Users\\Administrator\\Desktop\\Images\\Image.png ", ImageFormat.Png);
}
}
}
效果图
其他
以上代码演示的是将PDF转换为PNG格式,如果想要转换为其他图片格式的话,如JPG,BMP或者EMF等,只需在更改代码最后的格式即可。例如:
复制
image.Save("Image.jpg",ImageFormat.Jpeg);