如何使用 C# 從 PDF 中擷取嵌入的文字與圖片

Extract Embedded Text and Images from PDFs in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

透過簡單的 C# 方法呼叫,即可從 PDF 文件中擷取文字內容與圖片。 擷取嵌入式內容,以便進行編輯、分析或在其他應用程式中重新利用。

文字與圖像擷取功能可從 PDF 文件中提取文字內容及圖形元素。 存取並重新利用內容,以便進行編輯、搜尋、將文字轉換為其他格式,或儲存圖片以供重複使用。 無論您需要使用 C# 解析 PDF 進行資料分析、將內容轉換為可搜尋格式,還是擷取視覺元素以供歸檔,IronPDF 皆提供全面的擷取工具。
using IronPDF 擷取文字與圖片。 請將擷取的圖片儲存至磁碟,或轉換為其他格式,再嵌入至新文件中。 此靈活性可支援需要內容轉換的工作流程,例如將 PDF 轉換為 HTML 或重新利用擷取的圖片。

快速入門:使用 IronPDF 擷取文字與圖片

只需幾行程式碼,即可從 PDF 中擷取文字和圖片。 本快速入門指南將示範如何從 PDF 文件中擷取嵌入式內容,以供內容再利用與分析之用。 透過 IronPDF 的精簡解決方案,擷取文字進行編輯,或儲存圖片以供後續使用。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    var pdf = new IronPdf.PdfDocument("sample.pdf");  
    string text = pdf.ExtractAllText();  
    var images = pdf.ExtractAllImages();
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer


如何從 PDF 檔案中擷取文字?

從新渲染及現有的 PDF 文件中擷取文字。 請使用 ExtractAllText 方法從文件中提取嵌入的文字。 此方法會傳回一個包含 PDF 中所有文字的字串。 各頁以四個連續的換行字元分隔。 此範例使用從維基百科網站擷取並渲染的樣本 PDF 檔案。

當處理包含國際語言及 UTF-8 字元的 PDF 檔案時,IronPDF 能維持正確的編碼與字元呈現。 這可確保非拉丁文字及特殊字元的正確顯示。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text.cs
using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text
string text = pdf.ExtractAllText();

// Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text);
Imports IronPdf
Imports System.IO

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text
Private text As String = pdf.ExtractAllText()

' Export the extracted text to a text file
File.WriteAllText("extractedText.txt", text)
$vbLabelText   $csharpLabel
維基百科頁面與提取的純文字並列顯示,展示文字提取過程

如何根據精確座標擷取文字?

擷取每頁 PDF 文件中文字行與字元的座標。 從 PDF 中選取一頁,並存取 LinesCharacters 屬性。 座標包含 BottomLeft 等值,代表文字位置。 此功能可保留版面配置,並支援文字位置分析。

對於需要以 C# 讀取 PDF 檔案並具備位置感知能力的開發人員而言,座標擷取功能可提供資料,用以維持文件結構並實現進階文字分析。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-by-line-character.cs
using IronPdf;
using System.IO;
using System.Linq;

// Open PDF from file
PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text by lines
var lines = pdf.Pages[0].Lines;

// Extract text by characters
var characters = pdf.Pages[0].Characters;

File.WriteAllLines("lines.txt", lines.Select(l => $"at Y={l.BoundingBox.Bottom:F2}: {l.Contents}"));
Imports IronPdf
Imports System.IO
Imports System.Linq

' Open PDF from file
Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text by lines
Private lines = pdf.Pages(0).Lines

' Extract text by characters
Private characters = pdf.Pages(0).Characters

File.WriteAllLines("lines.txt", lines.Select(Function(l) $"at Y={l.BoundingBox.Bottom:F2}: {l.Contents}"))
$vbLabelText   $csharpLabel
分屏畫面顯示維基百科主頁與已擷取的文字檔案,其中 Y 座標顯示已解析的內容

如何從 PDF 中擷取圖片?

請使用 ExtractAllImages 方法從文件中提取所有嵌入的圖片。 此方法會將影像以 List 物件的 AnyBitmap 清單形式傳回。 我們使用同一份文件,擷取其中的圖片並將其匯出至"images"資料夾。 此功能支援影像歸檔、內容遷移,以及將 PDF 頁面渲染為影像以供後續處理。

擷取的圖片將維持原始畫質,並可儲存為多種格式,包括 PNG、JPEG 和 BMP。針對雲端儲存工作流程,可將此功能與 Azure Blob Storage 整合以進行圖片管理

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-image.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract images
var images = pdf.ExtractAllImages();

for(int i = 0; i < images.Count; i++)
{
    // Export the extracted images
    images[i].SaveAs($"images/image{i}.png");
}
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract images
Private images = pdf.ExtractAllImages()

For i As Integer = 0 To images.Count - 1
	' Export the extracted images
	images(i).SaveAs($"images/image{i}.png")
Next i
$vbLabelText   $csharpLabel
執行圖片擷取工具後,檔案總管以縮圖檢視模式顯示 19 張已擷取的 PNG 圖片

有哪些不同的圖片擷取方法?

除了 ExtractAllImages 方法外,請使用 ExtractAllBitmapsExtractAllRawImages 方法來擷取圖片資訊。 雖然 ExtractAllBitmaps 會傳回 ListAnyBitmap,但 ExtractAllRawImages 會擷取所有圖片,並將其以原始 byte[] (byte[]) 的形式傳回。

ExtractAllRawImages 方法在處理記憶體中的影像資料,或與需要位元組陣列輸入的系統整合時,表現相當出色。 在將 PDF 匯出至記憶體流的場景中,原始位元組陣列格式能提供最佳的靈活性。


如何從特定的 PDF 頁面中擷取內容?

從單一或多個指定頁面中擷取文字與圖片。 請使用 ExtractTextFromPageExtractTextFromPages 方法從單一或多個頁面中提取文字。 針對圖片,請使用 ExtractImagesFromPageExtractImagesFromPages 方法。

這種細粒度的控制功能,對於處理大型文件時特別有用,因為通常只有特定段落包含相關內容。 它還支援分割 PDF 並擷取單一頁面以進行獨立處理的功能。

:path=/static-assets/pdf/content-code-examples/how-to/extract-text-and-images-extract-text-single-multiple.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Extract text from page 1
string textFromPage1 = pdf.ExtractTextFromPage(0);

int[] pages = new[] { 0, 2 };

// Extract text from pages 1 & 3
string textFromPage1_3 = pdf.ExtractTextFromPages(pages);
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Extract text from page 1
Private textFromPage1 As String = pdf.ExtractTextFromPage(0)

Private pages() As Integer = { 0, 2 }

' Extract text from pages 1 & 3
Private textFromPage1_3 As String = pdf.ExtractTextFromPages(pages)
$vbLabelText   $csharpLabel

何時應從特定頁面而非所有頁面進行擷取?

在以下情況下從特定頁面擷取內容:

  • 處理包含特定區段相關資料的大型 PDF 檔案
  • 實作可獨立處理各頁面的工作流程
  • 建置需要增量內容顯示或處理的應用程式
  • 僅處理所需頁面以優化記憶體使用
  • 建立針對特定頁面的搜尋或索引功能

我應該了解哪些效能考量?

在擷取 PDF 內容時,請考量以下效能因素:

  • 記憶體使用:從大型文件中逐頁擷取內容,以將記憶體消耗降至最低
  • 處理時間:在適當的情況下,針對多頁面的資料擷取使用並行處理
  • 檔案大小:包含高解析度圖片的大型 PDF 檔案需要更長的處理時間
  • 儲存空間:請預留足夠的磁碟空間,以備提取大量高解析度圖片之用
  • 多執行緒:IronPDF 支援多執行緒操作,以提升多核心系統上的效能

若要獲得最佳的內存 PDF 效能,請使用記憶體流操作來減少磁碟 I/O 開銷。

常見問題

如何在 C# 中從 PDF 文件中擷取文字?

using IronPDF 的 ExtractAllText 方法,可從 PDF 文件中擷取嵌入的文字。此方法會傳回一個字串,其中包含 PDF 中的所有文字,各頁面以四個連續的換行字元分隔。IronPDF 能正確處理國際語言及 UTF-8 字元的編碼。

我可以透過程式碼從 PDF 檔案中擷取圖片嗎?

是的,IronPDF 提供 ExtractAllImages 方法,用於從 PDF 文件中擷取圖形元素。您可以將擷取的圖片儲存至磁碟,或轉換為其他格式,再將其嵌入新文件中。

PDF 內容擷取的主要應用情境有哪些?

IronPDF 的資料擷取工具支援多種工作流程,包括解析 PDF 進行資料分析、將內容轉換為可搜尋格式、擷取視覺元素以供歸檔,以及將內容重新利用以進行編輯或轉換為其他格式(如 HTML)。

提取 PDF 內容需要多少行程式碼?

透過 IronPDF,您只需幾行程式碼即可擷取文字與圖片。只需載入您的 PDF 文件,並呼叫 ExtractAllText() 進行文字擷取,或呼叫 ExtractAllImages() 進行圖片擷取。

我可以從特定頁面提取內容,而不是整個文件嗎?

是的,IronPDF 允許您指定要擷取文字和圖片的特定頁面,讓您能精確控制從 PDF 文件中擷取哪些內容。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。