跳過到頁腳內容
使用IRONPDF

如何在C#中從PDF中提取圖像

您是否是一位需要從PDF中提取圖像的開發者? 也許您需要提取圖像以便在其他文件中重用,或在使用新品牌圖像更新PDF文件前,去除舊的品牌圖像。 無論您的需求如何,IronPDF均可助您輕鬆完成整個過程。

本文演示如何使用IronPDF的簡單方法檢索嵌入的圖像。 您將學習如何一次性提取所有圖像或針對特定頁面提取,提供完整的代碼示例,這些示例能立即在您的.NET應用中運行。 在本文結束時,您將能夠自信地以編程方式從任何PDF文檔中提取圖像。

為什麼開發者需要從PDF中提取圖像?

從PDF文檔中提取圖像服務於許多商務目的。 文檔處理系統經常需要分離視覺資源以供分類或分析。 內容管理平台需要提取圖像以重新用於不同媒介中的圖形。 檔案系統從提取和獨立存儲圖像中獲益,以便於更好的組織和搜索。

手動提取在處理數百或數千份文檔時並不具備可擴展性。 使用IronPDF的自動提取可確保一致性、節省時間,並在整個過程中保留圖像質量。 該庫的Chrome渲染引擎在處理PDF內容時提供精準的像素精確度。 無論是構建文檔管理系統,創建檔案解決方案,還是重新利用視覺內容,IronPDF都提供了您所需的工具來高效提取嵌入圖像

如何開始使用IronPDF?

通過NuGet Package Manager安裝IronPDF只需幾秒鐘。 創建一個新項目或打開現有項目,然後在Package Manager控制台中運行:

Install-Package IronPdf

NuGet 用 NuGet 安裝

PM >  Install-Package IronPdf

NuGet 查看 https://www.nuget.org/packages/IronPdf 以快速安裝。超過 1000 萬次下載,它正在用 C# 改變 PDF 開發。 您還可以下載 DLLWindows 安裝程序

安裝後,將以下命名空間添加到您的C#文件中:

using IronPdf;
using System.Collections.Generic;
using System.Drawing;
using IronPdf;
using System.Collections.Generic;
using System.Drawing;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

下載IronPDF以立即開始提取圖像,或瀏覽全面的文檔以了解更多功能。 欲獲得詳細的API信息,請查看對象引用指南

如何從PDF文檔中提取所有圖像?

ExtractAllImages方法使得從PDF中提取每一張圖像變得相當簡單。 此方法返回一個包含文件中所有圖像的AnyBitmap對象集合。 為了演示其工作原理,我創建了一個包含三幅圖像的示例文檔:

現在,我們來看一下將從該文檔中提取所有圖像的代碼:

// Load the PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all images from the PDF
IEnumerable<AnyBitmap> allImages = pdf.ExtractAllImages();
// Save each image to disk
int imageIndex = 0;
foreach (var image in allImages)
{
    image.SaveAs($"extracted_image_{imageIndex}.png");
    imageIndex++;
}
// Load the PDF document
var pdf = PdfDocument.FromFile("document.pdf");
// Extract all images from the PDF
IEnumerable<AnyBitmap> allImages = pdf.ExtractAllImages();
// Save each image to disk
int imageIndex = 0;
foreach (var image in allImages)
{
    image.SaveAs($"extracted_image_{imageIndex}.png");
    imageIndex++;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此代碼加載您的PDF,提取所有嵌入的圖像,並將其保存為PNG文件。 AnyBitmap類無縫處理各種圖像格式,保留原始質量。 您還可以通過更改文件擴展名將其保存為JPEG、BMP或TIFF圖像格式。 For more complex scenarios, explore working with annotations or managing PDF metadata.

提取過程保持圖像的分辨率和色彩深度,確保在提取過程中無質量損失。 IronPDF自動處理PDF中發現的不同圖像壓縮類型,包括嵌入文件中的JPEG、PNG和TIFF格式。

在此,您可以看到代碼已成功保存提取出的圖像文件:

若查看第一個圖像,您可以看到它已維持其原始顏色和質量:

如何提取特定頁面的圖像?

有時您只需要特定頁面的圖像而不是整個文檔。 ExtractImagesFromPage和ExtractImagesFromPages方法提供了這種針對性的提取能力。 在以下示例中,我們使用較長的PDF文檔來演示IronPDF如何處理從特定頁面提取。 我將使用從維基百科頁面渲染的PDF。

// Extract images from a single page (page 2)
var singlePageImages = pdf.ExtractImagesFromPage(1); // Pages are zero-indexed
// Extract images from multiple pages (pages 1, 3, and 5)
var multiplePageImages = pdf.ExtractImagesFromPages(new[] { 0, 2, 4 });
// Process extracted images
var i = 0;
foreach (var image in multiplePageImages)
{
    image.SaveAs($"C:\\Users\\kyess\\Desktop\\Desktop\\Code-Projects\\ExtractImageFromPdf\\output\\MultiPaged_image{i}.jpg");
    i++;
}
// Extract images from a single page (page 2)
var singlePageImages = pdf.ExtractImagesFromPage(1); // Pages are zero-indexed
// Extract images from multiple pages (pages 1, 3, and 5)
var multiplePageImages = pdf.ExtractImagesFromPages(new[] { 0, 2, 4 });
// Process extracted images
var i = 0;
foreach (var image in multiplePageImages)
{
    image.SaveAs($"C:\\Users\\kyess\\Desktop\\Desktop\\Code-Projects\\ExtractImageFromPdf\\output\\MultiPaged_image{i}.jpg");
    i++;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

當處理大型PDF時,這種方法特別有用,因為只有某些部分包含相關圖像。 通過避免不必要的提取操作,這將減少內存使用並提高處理速度。 For handling multiple PDFs efficiently, consider implementing async operations or exploring parallel PDF generation techniques.

如您所見,代碼輕鬆提取了指定頁面上的圖像,以及來自第2頁的單一圖像:

如何從PDF中提取圖像:圖4 - 特定頁面圖像提取輸出

IronPDF提供了哪些高級功能?

IronPDF支持比基本圖像檢索更復雜的提取場景。 ExtractAllRawImages方法以字節數組形式提供原始圖像數據,完美用於直接數據庫存儲或自訂處理管道。

// Extract raw image data for advanced processing
var rawImages = pdf.ExtractAllRawImages();
foreach (byte[] imageData in rawImages)
{
    // Process raw bytes - store in database, apply filters, etc.
    System.IO.File.WriteAllBytes("raw_image.dat", imageData);
}
// Extract raw image data for advanced processing
var rawImages = pdf.ExtractAllRawImages();
foreach (byte[] imageData in rawImages)
{
    // Process raw bytes - store in database, apply filters, etc.
    System.IO.File.WriteAllBytes("raw_image.dat", imageData);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

如何從PDF中提取圖像:圖5 - 展示PDF到數據庫存儲的原始圖像數據提取流程圖

IronPDF還能無縫處理加密的PDF。 加載文檔時提供密碼,圖像提取與未加密文件完全相同。 該庫在尊重文檔權限的同時管理不同PDF安全級別。 Microsoft對在.NET中處理圖像的文檔提供了圖像處理操作的附加背景。

需知的常見問題是什麼?

在從PDF中提取圖像時,幾點考慮確保操作順利。 處理包含高分辨率圖像的大文檔時,內存管理變得極其重要。 逐頁處理PDF而不是一次加載所有內容,以達到最佳性能。 Stack Overflow社區時常討論多種方法,但IronPDF的實施因其簡單性和可靠性而脫穎而出。

損壞的PDF可能包含受損的圖像。 IronPDF優雅地處理這些狀況,跳過無法恢復的圖像並提取有效圖像。 在生產環境中始終將提取代碼包裹在try-catch塊中。

有些PDF使用圖像遮罩或透明層。 IronPDF正確處理這些複雜的圖像結構,並在適用時維持Alpha通道。 當您需要從具有透明度的PDF文檔中提取圖像時,該庫會準確地保留所有圖像屬性。 有關附加故障排除資源,訪問IronPDF 故障排除指南

結論

IronPDF將PDF圖像提取的複雜任務轉化為一個簡單且可靠的過程。 從使用ExtractAllImages進行基本提取到基於特定頁面的操作,該庫高效地滿足了多樣需求。 在您的.NET應用中可通過最小的代碼從PDF文檔中提取圖像,使IronPDF成為文檔處理工作流程的寶貴工具。 現在您可以處理提取的圖像,將它們用於其他PDF文檔,或根據您的需要使用。 若您希望在更多文檔中重用它們,請務必查看IronPDF在PDF上標記圖像的指導。

準備在項目中實施圖像提取嗎? 開始免費試用,以尋找最適合您的解決方案。

立即開始使用 IronPDF。
green arrow pointer

常見問題解答

如何使用 C# 從 PDF 中提取圖像?

您可以使用 IronPDF 在 C# 中從 PDF 文件中提取影像。它提供了一些簡單有效的方法,可以存取和提取 PDF 文件中的圖像。

使用 IronPDF 進行影像擷取有哪些好處?

IronPDF 簡化了從 PDF 檔案中擷取影像的流程,輕鬆處理不同的影像格式和解析度。對於希望在 PDF 檔案中重複使用圖形或更新品牌識別的開發人員來說,它是理想之選。

IronPDF是否支援從加密的PDF檔案中提取影像?

是的,IronPDF 支援從加密的 PDF 文件中提取圖像,前提是您擁有必要的權限和對文件的存取權。

IronPDF 能否處理大型 PDF 檔案以擷取影像?

IronPDF 旨在有效處理大型 PDF 文件,從而能夠在不出現效能問題的情況下擷取影像。

是否有使用 IronPDF 從 PDF 中提取圖像的程式碼範例?

是的,指南包含程式碼範例,示範如何在 .NET 環境中使用 IronPDF 從 PDF 文件中擷取影像。

IronPDF可以擷取哪些影像格式?

IronPDF 可以從 PDF 文件中提取各種影像格式,例如 JPEG、PNG 和 BMP。

IronPDF能否擷取原始解析度的影像?

是的,IronPDF 在從 PDF 文件中提取影像時會保留影像的原始解析度。

IronPDF是否提供影像擷取問題的支援?

IronPDF 提供全面的文件和支援資源,協助追蹤和解決與影像擷取相關的任何問題。

IronPDF 在從 PDF 擷取影像時是否相容於 .NET 10?

是的-IronPDF 完全相容 .NET 10。它支援 .NET 10 應用程式中的映像提取功能(例如 ExtractAllImages、ExtractImagesFromPage 和 ExtractAllRawImages),無需任何特殊配置。 IronPDF 的平台支援包括 .NET 10 以及其他現代 .NET 版本。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。