最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析如何通過C#提取PDF單頁與全文檔的圖片

 更新時間:2025年11月07日 08:18:56   作者:咕白m625  
在.NET 開發(fā)中,從 PDF 里提取圖片是個高頻需求,本文將介紹如何使用免費庫 Free Spire.PDF for .NET 精準實現整文檔批量提取或指定頁面精準提取,代碼簡單且操作高效,希望對大家有所幫助

在.NET 開發(fā)中,從 PDF 里提取圖片是個高頻需求 —— 不管是數據遷移時需要剝離文檔中的圖表,還是內容分析時要提取關鍵插圖,都繞不開這個場景。但傳統(tǒng)方案總有些麻煩:付費 PDF 庫成本高,還可能依賴 Adobe Acrobat 這類重型工具,對中小型項目不夠友好。

本文將介紹如何使用免費庫 Free Spire.PDF for .NET 精準實現“整文檔批量提取”或“指定頁面精準提取”,代碼簡單、操作高效。

一、前期準備:快速引入工具庫

使用 Free Spire.PDF 前,需先完成庫引用,推薦通過 NuGet 安裝(步驟極簡,3步即可完成):

  • 打開Visual Studio,右鍵項目選擇“管理NuGet程序包”;
  • 在“瀏覽”欄搜索“Free Spire.PDF”,找到官方包后點擊“安裝”;
  • 等待安裝完成,項目會自動添加引用,無需手動配置路徑。

注意:免費版對單文檔頁數有一定限制。

二、核心邏輯與場景實現

Free Spire.PDF 提取圖片的核心邏輯很清晰:通過 PdfImageHelper 類的 GetImagesInfo() 方法獲取頁面圖片信息,再調用 PdfImageInfo.Image.Save() 保存圖片。以下針對兩種典型場景,提供可直接復用的代碼。

場景1:提取 PDF 文檔中所有圖片

適用于需要批量獲取文檔中所有圖片的場景(例如歸檔文檔內所有插圖等)。實現邏輯為“加載文檔→遍歷所有頁面→提取并按序保存圖片”。

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

namespace ExtractAllImages
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加載目標PDF文檔
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Input.pdf"); // 替換為你的PDF路徑

            // 2. 初始化圖片處理工具
            PdfImageHelper imageHelper = new PdfImageHelper();
            
            // 3. 遍歷所有頁面,提取圖片
            int imageCount = 0; // 用于給圖片命名,避免重復
            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
            {
                // 獲取當前頁對象
                PdfPageBase currentPage = pdf.Pages[pageIndex];
                // 獲取當前頁所有圖片信息
                PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(currentPage);

                // 保存當前頁的圖片
                foreach (var imageInfo in imageInfos)
                {
                    Image image = imageInfo.Image;
                    // 保存路徑可自定義
                    image.Save($"Output\image_{imageCount}.png"); 
                    imageCount++;
                }
            }

            // 4. 釋放資源
            pdf.Dispose();
        }
    }
}

場景2:提取 PDF 指定頁面的圖片

適用于僅需某幾頁圖片的場景(例如從多頁報告中提取封面圖、從論文中提取某頁的圖表等)。核心是“定位目標頁面→單獨提取該頁圖片”。

關鍵提醒:Free Spire.PDF 的頁面索引從0開始(第1頁對應索引0,第2頁對應索引1,以此類推)。

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

namespace ExtractImagesFromSpecificPage
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加載目標PDF文檔
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("Input.pdf"); // 替換為你的PDF路徑

            // 2. 定位指定頁面(此處以第1頁為例,索引為0)
            int targetPageIndex = 0; // 如需提取第3頁,改為2即可
            PdfPageBase targetPage = pdf.Pages[targetPageIndex];

            // 3. 初始化圖片處理工具并獲取圖片信息
            PdfImageHelper imageHelper = new PdfImageHelper();
            PdfImageInfo[] imageInfos = imageHelper.GetImagesInfo(targetPage);

            // 4. 保存指定頁的圖片
            for (int i = 0; i < imageInfos.Length; i++)
            {
                Image image = imageInfos[i].Image;
                // 保存路徑可自定義
                image.Save($"Output\page_{targetPageIndex + 1}_image_{i}.png"); 
            }

            // 5. 釋放資源
            pdf.Dispose();
        }
    }
}

三、方案優(yōu)勢與注意事項

  • 靈活可控:支持自定義圖片保存路徑(如Output\)和格式(如 PNG、JPG 等);
  • 高效批量處理:通過循環(huán)邏輯可快速處理多頁 PDF,無需手動逐頁操作;
  • 輕量無依賴:無需安裝 Adobe Acrobat 等第三方軟件,僅需引用一個類庫即可運行。

總結

用 Free Spire.PDF for .NET 提取PDF圖片,無需編寫復雜解析算法,也不用依賴重型工具,幾行代碼即可實現精準提取。無論是整文檔批量處理,還是指定頁面定向提取,都能輕松應對。

到此這篇關于淺析如何通過C#提取PDF單頁與全文檔的圖片的文章就介紹到這了,更多相關C#提取PDF圖片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c#窗體傳值用法實例詳解

    c#窗體傳值用法實例詳解

    這篇文章主要介紹了c#窗體傳值用法,以實例形式較為詳細的分析了C#窗體傳值的各種常用技巧,需要的朋友可以參考下
    2015-06-06
  • C#難點逐個擊破(1):ref參數傳遞

    C#難點逐個擊破(1):ref參數傳遞

    一般情況,方法的參數傳遞是通過值進行傳遞的,另一種情況是引用傳遞,大家可以參考下。
    2010-02-02
  • 深入理解C#管道式編程

    深入理解C#管道式編程

    這篇文章主要給大家介紹了關于C#管道式編程的介紹與實現方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-07-07
  • C#多態(tài)的三種實現方式(小結)

    C#多態(tài)的三種實現方式(小結)

    這篇文章主要介紹了C#多態(tài)的三種實現方式(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C#利用反射實現多數據庫訪問

    C#利用反射實現多數據庫訪問

    本文詳細講解了C#利用反射實現多數據庫訪問的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • C# 線程相關知識總結

    C# 線程相關知識總結

    這篇文章主要介紹了C# 線程相關知識,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • C#基于Linq和反射實現數據持久化框架Xml4DB詳解

    C#基于Linq和反射實現數據持久化框架Xml4DB詳解

    在本篇文章里小編給大家整理的是關于C#基于Linq和反射實現數據持久化框架Xml4DB相關知識點,有需要的朋友們學習下。
    2019-08-08
  • C#中使用Join與GroupJoin將兩個集合進行關聯與分組

    C#中使用Join與GroupJoin將兩個集合進行關聯與分組

    這篇文章主要介紹了C#中使用Join與GroupJoin將兩個集合進行關聯與分組,文中分別對Join和GroupJoin的用法進行詳細說明,需要的朋友可以參考下
    2017-12-12
  • C#中靜態(tài)構造函數的幾點說明介紹

    C#中靜態(tài)構造函數的幾點說明介紹

    本篇文章主要是對C#中靜態(tài)構造函數的幾點說明進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C# 結合 Javascript 測試獲取天氣信息

    C# 結合 Javascript 測試獲取天氣信息

    本文將介紹如何使用 C# 并結合 JavaScript 獲取天氣信息,獲取的數據來源于360瀏覽器首頁數據,對C# 獲取天氣信息示例代碼感興趣的朋友一起看看吧
    2024-08-08

最新評論

武穴市| 光山县| 石泉县| 介休市| 城固县| 济源市| 黄梅县| 黄骅市| 怀集县| 富宁县| 治多县| 封开县| 麦盖提县| 龙口市| 平和县| 洪洞县| 东丰县| 介休市| 连州市| 旌德县| 库伦旗| 台前县| 西乡县| 汝州市| 阿鲁科尔沁旗| 永宁县| 方城县| 尚义县| 老河口市| 腾冲县| 高雄县| 永州市| 福鼎市| 竹北市| 周至县| 偃师市| 苏尼特右旗| 昌图县| 化州市| 阿尔山市| 凌源市|