PDF文档因其跨平台稳定性和格式保真度成为信息交换的核心载体。然而,PDF文件作为容器格式的封闭特性,使得其内部资源的有效提取成为技术挑战。尤其是对嵌入式图像这类非结构化数据的获取需求日益凸显。通过编程手段实现自动化提取不仅能突破传统手动截图的效率瓶颈,更能满足数据归档、多媒体资源库构建、文档智能解析等场景的深层需求。本文将介绍如何在.NET平台使用C#提取PDF文档中的图片,为PDF图片的再利用提供便捷方案。

本文所使用的方法需要用到免费的Free Spire.PDF for .NET,NuGet:PM> Install-Package FreeSpire.PDF

用C#提取PDF文档中的所有图片

我们可以使用库中的PdfImageHelper类来处理PDF文档图片的提取任务。首先需要使用PdfImageHelper.GetImagesInfo(PdfPageBase)方法来获取PDF页面的图片信息为PdfImageInfo集合,然后使用PdfImageInfo.Image.Save()方法,将图片保存到指定位置,从而完成图片提取。
以下是操作步骤:

  1. 创建PdfDocument对象,使用PdfDocument.LoadFromFile()载入PDF文档。
  2. 创建PdfImageHelper对象,用于获取图片信息。
  3. 遍历文档中的页面,使用PdfDocument.Pages[]属性获取当前页面。
  4. 使用PdfImageHelper.GetImagesInfo()方法获取当前页面的图片信息为PdfImageInfo集合。
  5. 使用PdfImageInfo.Image.Save()将图片保存到指定位置。
  6. 释放资源。

代码示例

using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace AddImageToPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建PdfDocument实例
            PdfDocument pdf = new PdfDocument();

            // 载入PDF文档
            pdf.LoadFromFile("Sample.pdf");

            // 创建PdfImageHelper对象
            PdfImageHelper imageHelper = new PdfImageHelper();

            // 遍历PDF文档中的页面
            for (int i = 0; i < pdf.Pages.Count; i++)
            {
                // 获取当前页面
                PdfPageBase page = pdf.Pages[i];
                // 获取当前页面的图片信息
                PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);
                // 遍历页面中的图片
                for (int j = 0; j < imageInfos.Length; j++)
                {
                    // 保存当前图片
                    imageInfos[j].Image.Save($"Images/Page{i + 1}-Image{j + 1}.png");
                }
            }

            // 释放资源
            pdf.Dispose();
        }
    }
}

提取结果
C#提取PDF图片

本文演示了如何在.NET平台使用C#提取PDF文档中的所有图片。


大丸子
72 声望7 粉丝