随着 pdf 的应运而生,我们会发现现在大多数文件都是 pdf 格式了,主要是因为 pdf 文档的稳定性和兼容性较强, 在传输、 打印和阅读上 pdf 格式几乎是大家的首选。 但 PDF 文件是不能轻易实现编辑的。因此, 若是想要从 pdf 文件里面提取图片是比较困难的, 我们是没办法直接复制图片或者点击图片保存的。 常用的办法就是截图保存, 单张图片截图都很方便,但是批量图片就比较麻烦。 今天就给大家介绍一种办法,无论是单张图片亦或者是批量图片,通过使用 C#/VB.NET 都可以轻松实现图像的提取。事不宜迟,让我们开始吧。
引入 dll 类库
方法 1:
在程序中引入 Spire.PDF.dll 文件;将Free Spire.PDF for .NET 下载到本地,解压,找到 BIN 文件夹下的 Spire.PDF.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。
方法 2:
通过 NuGet 安装。可通过以下 2 种方法安装:
1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.PDF”,点击“安装”。等待程序安装完成。
2. 将以下内容复制到 PM 控制台安装。
Install-Package FreeSpire.PDF -Version 8.2.0
具体步骤:
创建一个 PDF 文档。
使用 PdfDocument.LoadFromFile()方法加载文档。
获取 Spire.Pdf.PdfPageBase 对象。
使用 PdfPageBase.ExtractImages()方法从 Spire.Pdf.PdfPageBase 中提取图片。
【C#】
using System.Collections.Generic;
using System.Drawing;
using Spire.Pdf;
namespace ExtractImagesFromPDF
{
class Program
{
static void Main(string[] args)
{
//实例化一个Spire.Pdf.PdfDocument的对象
PdfDocument doc = new PdfDocument();
//加载文档
doc.LoadFromFile("Samplex.pdf");
List<Image> ListImage = new List<Image>();
for (int i = 0; i < doc.Pages.Count; i++)
{
//获取Spire.Pdf.PdfPageBase对象
PdfPageBase page = doc.Pages[i];
// 从Spire.Pdf.PdfPageBase中提取图片
Image[] images = page.ExtractImages();
if (images != null && images.Length > 0)
{
ListImage.AddRange(images);
}
}
if (ListImage.Count > 0)
{
for (int i = 0; i < ListImage.Count; i++)
{
Image image = ListImage[i];
image.Save("imagex" + (i + 1).ToString() + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
}
}
}
}
复制代码
【VB.NET】
Imports System.Collections.Generic
Imports System.Drawing
Imports Spire.Pdf
Namespace ExtractImagesFromPDF
Class Program
Private Shared Sub Main(ByVal args() As String)
'实例化一个Spire.Pdf.PdfDocument的对象
Dim doc As PdfDocument = New PdfDocument
'加载文档
doc.LoadFromFile("Samplex.pdf")
Dim ListImage As List(Of Image) = New List(Of Image)
Dim i As Integer = 0
Do While (i < doc.Pages.Count)
' 获取Spire.Pdf.PdfPageBase对象
Dim page As PdfPageBase = doc.Pages(i)
' 从Spire.Pdf.PdfPageBase中提取图片
Dim images() As Image = page.ExtractImages
If ((Not (images) Is Nothing) _
AndAlso (images.Length > 0)) Then
ListImage.AddRange(images)
End If
i = (i + 1)
Loop
If (ListImage.Count > 0) Then
Dim i As Integer = 0
Do While (i < ListImage.Count)
Dim image As Image = ListImage(i)
image.Save(("imagex" _
+ ((i + 1).ToString + ".png")), System.Drawing.Imaging.ImageFormat.Png)
i = (i + 1)
Loop
End If
End Sub
End Class
End Namespace
复制代码
效果图:
注意:
测试代码中的文件路径为程序 Debug 路径,仅供参考,文件路径可自定义为其他路径。
评论