C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# PDF提取图片

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

作者: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 文件。

基本步骤如下:

这种方式适用于只需要提取 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 文档中提取所有图片的步骤如下:

完整示例代码如下:

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提取图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文