首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用C#代码从 PDF 文档中提取图片

使用C#代码从 PDF 文档中提取图片

原创
作者头像
用户12401097
发布2026-09-04 10:54:25
发布2026-09-04 10:54:25
580
举报

从 PDF 中提取图片是许多用户都会遇到的常见需求,例如将图片重新用于演示文稿、归档重要图像,或便于后续分析。掌握使用 C# 提取 PDF 图片的方法,可以帮助开发者更高效地管理资源,并简化日常工作流程。

本文将介绍如何使用 C# 从 PDF 的单个页面以及整个 PDF 文档中提取图片,并以 .NET PDF 处理库作为实现工具。

安装 .NET PDF 处理库

首先,需要将相关 PDF 处理库中的 DLL 文件添加为 .NET 项目的引用。你可以从对应的官方资源中下载所需文件,也可以通过 NuGet 安装相应的 PDF 处理组件。

代码语言:C#
复制
PM> Install-Package Spire.PDF

从指定 PDF 页面中提取图片

如果只需要提取 PDF 某一页面中的图片,可以先获取该页面包含的图片信息,再将图片逐一保存为独立文件。使用 C# 和 .NET PDF 处理库可以较方便地完成这一过程。

以下示例使用相关 PDF API 获取页面中的图片信息。通过 GetImagesInfo() 方法可以读取指定页面中的图片集合,然后使用 Image.Save() 将提取出的图片保存为 PNG 文件。

基本步骤如下:

  • 创建 PdfDocument 对象。
  • 使用 LoadFromFile() 方法加载 PDF 文件。
  • 通过 Pages[index] 获取需要处理的页面。
  • 创建图片处理对象。
  • 使用 GetImagesInfo() 获取页面中的图片信息。
  • 遍历图片集合,并通过 Image.Save() 将每张图片保存为 PNG 文件。

这种方式适用于只需要提取 PDF 中某个特定页面图片的场景,可以避免遍历整个文档,从而减少不必要的处理。

完整示例代码如下:

代码语言:C#
复制
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ExtractImagesFromSpecificPage
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文档
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");

            // 获取指定页面
            PdfPageBase page = doc.Pages[0];

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

            // 获取页面中的所有图片信息
            PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);

            // 遍历图片信息
            for (int i = 0; i < imageInfos.Length; i++)
            {
                // 获取指定的图片信息
                PdfImageInfo imageInfo = imageInfos[i];

                // 获取图片
                Image image = imageInfo.Image;

                // 将图片保存为 PNG 文件
                image.Save("C:\\Users\\Administrator\\Desktop\\Extracted\\Image-" + i + ".png");
            }

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

从整个 PDF 文档中提取所有图片

了解如何从指定页面提取图片后,你还可以遍历 PDF 文档中的所有页面,并从每个页面中提取图片。这样可以一次性获取整个文档中包含的所有图片。

从整个 PDF 文档中提取所有图片的步骤如下:

  • 创建一个 PdfDocument 对象。
  • 使用 PdfDocument.LoadFromFile() 方法加载 PDF 文件。
  • 创建一个 PdfImageHelper 对象。
  • 遍历文档中的所有页面。
  • 使用 PdfDocument.Pagesindex 属性获取指定页面。
  • 使用 PdfImageHelper.GetImagesInfo() 方法获取该页面中的图片信息集合。
  • 遍历图片信息集合,并使用 PdfImageInfo.Image.Save() 方法将每张图片保存为 PNG 文件。

完整示例代码如下:

代码语言:C#
复制
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Drawing;

namespace ExtractAllImages
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载 PDF 文档
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");

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

            // 声明一个 int 类型变量
            int m = 0;

            // 遍历所有页面
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                // 获取指定页面
                PdfPageBase page = doc.Pages[i];

                // 获取页面中的所有图片信息
                PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(page);

                // 遍历图片信息
                for (int j = 0; j < imageInfos.Length; j++)
                {
                    // 获取指定的图片信息
                    PdfImageInfo imageInfo = imageInfos[j];

                    // 获取图片
                    Image image = imageInfo.Image;

                    // 将图片保存为 PNG 文件
                    image.Save("C:\\Users\\Administrator\\Desktop\\Extracted\\Image-" + m + ".png");
                    m++;
                }

            }

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

总结

提取 PDF 中的图片是文档处理中的常见需求。通过 C# 和 .NET PDF 处理库,可以根据实际需求提取单个页面中的图片,也可以遍历整个 PDF 文档,一次性获取所有页面中的图片。

本文介绍了两种实现方式:第一种针对指定页面,通过获取页面中的图片信息并逐一保存,实现精准提取;第二种遍历 PDF 的所有页面,获取每一页中的图片并保存为独立的 PNG 文件。开发者可以根据具体应用场景选择合适的方法,从而更高效地处理和管理 PDF 中的图像资源。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 安装 .NET PDF 处理库
  • 从指定 PDF 页面中提取图片
  • 从整个 PDF 文档中提取所有图片
  • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档