C#代码轻松实现从PDF文档中提取图片

 更新时间:2026年09月04日 11:03:29   作者:2501_93070778  
从 PDF 中提取图片是许多用户都会遇到的常见需求,本文将介绍如何使用 C# 从 PDF 的单个页面以及整个 PDF 文档中提取图片,并以 .NET PDF 处理库作为实现工具,希望对大家有所帮助

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

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

安装 .NET PDF 处理库

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

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 中某个特定页面图片的场景,可以避免遍历整个文档,从而减少不必要的处理。

完整示例代码如下:

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.Pages[index] 属性获取指定页面。
    • 使用 PdfImageHelper.GetImagesInfo() 方法获取该页面中的图片信息集合。
    • 遍历图片信息集合,并使用 PdfImageInfo.Image.Save() 方法将每张图片保存为 PNG 文件。

完整示例代码如下:

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 中的图像资源。

到此这篇关于C#代码轻松实现从PDF文档中提取图片的文章就介绍到这了,更多相关C# PDF提取图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • WPF InkCanvas基本操作方法详解

    WPF InkCanvas基本操作方法详解

    这篇文章主要为大家详细介绍了WPF InkCanvas基本的操作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • C#生成Word文件(图片、文字)

    C#生成Word文件(图片、文字)

    这篇文章主要为大家详细介绍了C#生成Word文件,包括图片、文字等素材,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Entity Framework主从表数据加载方式

    Entity Framework主从表数据加载方式

    这篇文章介绍了Entity Framework主从表数据加载方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#中Json.NET的JSON转换的实现示例

    C#中Json.NET的JSON转换的实现示例

    本文深入探讨了在C#中使用Json.NET库实现JSON的解析、生成、序列化和反序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • C#获取两个数的最大公约数和最小公倍数示例

    C#获取两个数的最大公约数和最小公倍数示例

    本文介绍了使用C#获取两个数的最大公约数和最小公倍数的示例,大家参考使用吧
    2014-01-01
  • 在C#中调用Python脚本实现跨语言功能集成

    在C#中调用Python脚本实现跨语言功能集成

    随着现代应用程序的复杂性和多样性不断增加,跨语言集成已成为一种常见的开发实践,C# 和 Python 是两种广泛使用的编程语言,本文将详细介绍如何在 C# 中调用 Python 脚本,并通过传递参数实现功能的跨语言集成,需要的朋友可以参考下
    2026-03-03
  • 解析C# 程序结构

    解析C# 程序结构

    在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考
    2021-07-07
  • 老生常谈C# 中的 StreamReader 和 StreamWriter 类

    老生常谈C# 中的 StreamReader 和 StreamWriter 类

    这篇文章主要介绍了老生常谈C# 中的 StreamReader 和 StreamWriter 类,StreamReader 和 StreamWriter 位于 System.IO 命名空间中,当您想要读取或写入基于字符的数据时,这两个类都很有用,需要的朋友可以参考下
    2024-06-06
  • C#调用python脚本的方法详解

    C#调用python脚本的方法详解

    这篇文章主要为大家详细介绍了C#调用python脚本的方法,文中通过示例代码介绍的非常详细,感兴趣的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • C#实现接收QQ邮件的示例代码

    C#实现接收QQ邮件的示例代码

    这篇文章主要为大家详细介绍了C#如何使用pop协议来实现一下接收QQ邮件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08

最新评论