写点什么

C#/VB.NET:从 PDF 中提取图片

作者:在下毛毛雨
  • 2022 年 6 月 17 日
  • 本文字数:1954 字

    阅读完需:约 6 分钟

C#/VB.NET:从PDF中提取图片

随着 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.GenericImports System.DrawingImports 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 ClassEnd Namespace
复制代码

效果图:

注意:

测试代码中的文件路径为程序 Debug 路径,仅供参考,文件路径可自定义为其他路径。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022.06.02 加入

还未添加个人简介

评论

发布
暂无评论
C#/VB.NET:从PDF中提取图片_C#_在下毛毛雨_InfoQ写作社区