產品比較

使用 iTextSharp 與 IronPDF 在 C# 中從 PDF 中提取文本

介紹

從 PDF 文件中提取文字是現代軟體專案中的常見需求,從處理發票到為搜尋引擎挖掘內容。 開發人員需要可靠的庫,不僅提供準確的結果,還能在 C# .NET 應用程式中提供有效的整合體驗。 一些開發人員使用OCR(光學字符識別)工具從掃描文件和圖像中提取數據,但有時需要一個強大的文本提取工具來完成工作。

但是,由於市面上有許多 PDF 函式庫,選擇合適的工具可能會令人感到不知所措。 在對話中經常提到的兩個庫是iTextSharpIronPDF。 兩者都可以從PDF中提取文字,但在可用性、支援、效能和定價上有顯著差異。 本文比較了這兩個函式庫,透過不同的程式碼範例示範它們如何處理文本提取,以幫助您決定哪個最適合您的專案。

IronPDF 和 iTextSharp 庫概述

iTextSharp 長期以來一直是一個受歡迎的開源 .NET PDF 函式庫,提供強大的工具用於生成、操作和提取內容。 作為基於 Java 的 iText 的 C# 移植版,它提供了對 PDF 結構的深度控制,非常適合高級用戶。 然而,這種彈性伴隨著陡峭的學習曲線和許可限制; 商業用途通常需要付費許可證以避免 AGPL 的義務。

進入 IronPDF—一個為 .NET 建立的現代且對開發者友好的 PDF 庫。 它透過直觀的 API、清晰的文件和快速的支援來簡化常見任務,如文本提取。 使用此工具,開發人員可以輕鬆從PDF文件中提取圖片和文字、創建新的PDF檔案、實施PDF安全性等。

與iTextSharp不同,IronPDF避免了複雜的低層結構,讓您能更快速、更高效地工作。 無論您是在處理單一頁面還是數百份PDF,它都能讓事情變得簡單。

它也在積極維護,並提供定期更新以及簡單明了的許可模式,包括免費試用和對團隊及個人開發者都很實惠的計劃。

安裝和使用IronPDF

NuGet 使用NuGet安裝

PM >  Install-Package IronPdf

NuGet上查看https://www.nuget.org/packages/IronPdf以獲取快速安裝。已超過1000萬次下載,正用C#改變PDF開發。 您也可以下載DLLWindows 安裝程式

IronPDF 也可以通過在 NuGet 套件管理器主控台運行以下命令通過 NuGet 安裝

Install-Package IronPdf

透過套件管理器主控台安裝 IronPDF

或者,您可以通過 NuGet 套件管理器在解決方案螢幕上安裝它。 要執行此操作,請導航至「工具 > NuGet 套件管理員 > 為解決方案管理 NuGet 套件」。

Visual Studio中的工具下拉選單

然後,搜尋 IronPDF,並點擊「安裝」。

IronPDF NuGet 套件管理器畫面

使用 IronPDF 從 PDF 文件中提取文本

安裝後,提取文本非常簡單:

using IronPdf;

var pdf = PdfDocument.FromFile("invoice.pdf");
string extractedText = pdf.ExtractAllText();
Console.WriteLine(extractedText);
using IronPdf;

var pdf = PdfDocument.FromFile("invoice.pdf");
string extractedText = pdf.ExtractAllText();
Console.WriteLine(extractedText);
Imports IronPdf

Private pdf = PdfDocument.FromFile("invoice.pdf")
Private extractedText As String = pdf.ExtractAllText()
Console.WriteLine(extractedText)
$vbLabelText   $csharpLabel

📝 注意:此方法會閱讀整個 PDF 文件,並以閱讀順序返回文本,與傳統庫相比,節省了解析時間。

不需要處理編碼、內容流或手動解析。 IronPDF在內部處理這些操作,提供乾淨且精確的輸出,所需設定也很少。然後,您可以輕鬆地將提取的文本保存到新的文本文件,以便進一步操作或使用。

安裝 iTextSharp PDF 庫

下載 iTextSharp 的核心套件以生成 PDF:

Install-Package iTextSharp
Install-Package iTextSharp
SHELL

通過 NuGet 控制台安裝 iTextSharp

您也可以通過方案螢幕的套件管理器安裝iTextSharp。 要執行此操作,您首先需要前往「工具」下拉選單,然後尋找「NuGet 套件管理員 > 管理方案的 NuGet 套件」。

Visual Studio 的工具下拉選單

然後,只需搜尋 iTextSharp,然後點擊「安裝」。

Extract Text From Pdf Csharp Itextsharp 6 related to 安裝 iTextSharp PDF 庫

使用iTextSharp從PDF文件中提取文本

這是一個從單個 PDF 頁面中提取文本的範例:

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

string path = "sample.pdf";
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    var strategy = new SimpleTextExtractionStrategy();
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);
    Console.WriteLine(pageText);
}
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

string path = "sample.pdf";
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    var strategy = new SimpleTextExtractionStrategy();
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);
    Console.WriteLine(pageText);
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser
Imports iText.Kernel.Pdf.Canvas.Parser.Listener

Private path As String = "sample.pdf"
Using reader As New PdfReader(path)
Using pdf As New PdfDocument(reader)
	Dim strategy = New SimpleTextExtractionStrategy()
	Dim pageText As String = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy)
	Console.WriteLine(pageText)
End Using
End Using
$vbLabelText   $csharpLabel

此範例演示了iTextSharp的功能,但請注意,執行一個簡單任務所需的冗長性和額外的對象。

詳細比較

現在我們已經介紹了安裝和基本用法,讓我們來深入比較這兩個庫如何處理文本提取,看看它們如何從多頁 PDF 文件中提取文本。

進階範例:使用 IronPDF 從頁範圍中提取文字

IronPDF 支援精細控制頁面選擇和版面識別文字提取。

using IronPdf;

// Load PDF document
var pdf = PdfDocument.FromFile("longPdf.pdf");

int[] pages = new[] { 2, 3, 4 };

var text = pdf.ExtractTextFromPages(pages);

Console.WriteLine("Extracted text from pages 2, 3, and 4:" + text);
using IronPdf;

// Load PDF document
var pdf = PdfDocument.FromFile("longPdf.pdf");

int[] pages = new[] { 2, 3, 4 };

var text = pdf.ExtractTextFromPages(pages);

Console.WriteLine("Extracted text from pages 2, 3, and 4:" + text);
Imports IronPdf

' Load PDF document
Private pdf = PdfDocument.FromFile("longPdf.pdf")

Private pages() As Integer = { 2, 3, 4 }

Private text = pdf.ExtractTextFromPages(pages)

Console.WriteLine("Extracted text from pages 2, 3, and 4:" & text)
$vbLabelText   $csharpLabel

輸出

IronPDF 文字提取輸出

高級範例:使用 iTextSharp 從頁面範圍中提取文本

在 iTextSharp 中,您需要手動指定頁面範圍,並使用 PdfTextExtractor 提取文本:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load PDF document
PdfReader reader = new PdfReader("longPdf.pdf");
StringBuilder textBuilder = new StringBuilder();

// Extract text from pages 2–4
for (int i = 2; i <= 4; i++)
{
    string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
    textBuilder.AppendLine(pageText);
}

// Output the extracted text
Console.WriteLine(textBuilder.ToString());
reader.Close();
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load PDF document
PdfReader reader = new PdfReader("longPdf.pdf");
StringBuilder textBuilder = new StringBuilder();

// Extract text from pages 2–4
for (int i = 2; i <= 4; i++)
{
    string pageText = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
    textBuilder.AppendLine(pageText);
}

// Output the extracted text
Console.WriteLine(textBuilder.ToString());
reader.Close();
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.parser
Imports System.IO
Imports System.Text

' Load PDF document
Private reader As New PdfReader("longPdf.pdf")
Private textBuilder As New StringBuilder()

' Extract text from pages 2–4
For i As Integer = 2 To 4
	Dim pageText As String = PdfTextExtractor.GetTextFromPage(reader, i, New LocationTextExtractionStrategy())
	textBuilder.AppendLine(pageText)
Next i

' Output the extracted text
Console.WriteLine(textBuilder.ToString())
reader.Close()
$vbLabelText   $csharpLabel

輸出

iTextSharp 擷取的文字輸出

程式碼比較摘要

iTextSharp vs IronPDF 總結

IronPDF 和 iTextSharp 都能夠進行高級的 PDF 文字擷取,但它們在複雜性和清晰度上的處理方式有顯著不同:

  • IronPDF 保持內容清晰和易於訪問。 其高級方法如 PdfDocument.ExtractAllText() 允許您以最少的設置提取結構化內容。代碼簡單明了,即使是對 PDF 處理不熟悉的開發人員也能輕鬆實施。
  • iTextSharp,另一方面,要求對 PDF 結構有更深入的了解。 提取文本涉及設置自定義渲染監聽器、手動管理頁面以及逐行解釋佈局數據。雖然功能強大,但它更冗長且不太直觀,這使得IronPDF對於大多數 .NET 專案來說是一個更快速且更易於維護的選擇。

    但我們的比較不僅止於此,接下來,我們來看看這兩個庫在其他方面的比較。

詳細比較:IronPDF 與 iTextSharp

在評估 .NET 的 PDF 文本抽取庫時,開發人員通常會權衡簡便性、性能和長期支持之間的平衡。 讓我們來分析IronPDFiTextSharp在實際使用中的比較,特別是在使用C#從PDF中提取文本方面。

使用便利

✅ IronPDF:乾淨且現代的 API

IronPDF 強調開發者體驗。 通過 NuGet 安裝很簡單,語法直觀:

using IronPdf;

// Load the PDF
var pdf = PdfDocument.FromFile("sample.pdf");

// Extract all text from every page
string extractedText = pdf.ExtractAllText();

// Output
Console.WriteLine(extractedText);
using IronPdf;

// Load the PDF
var pdf = PdfDocument.FromFile("sample.pdf");

// Extract all text from every page
string extractedText = pdf.ExtractAllText();

// Output
Console.WriteLine(extractedText);
Imports IronPdf

' Load the PDF
Private pdf = PdfDocument.FromFile("sample.pdf")

' Extract all text from every page
Private extractedText As String = pdf.ExtractAllText()

' Output
Console.WriteLine(extractedText)
$vbLabelText   $csharpLabel

IronPDF 將複雜性隱藏在簡單的方法調用如 ExtractAllText() 背後,無需樣板代碼或解析邏輯。

iTextSharp:更冗長且更低層次

iTextSharp 需要手動解析每個頁面,並需付出更多的努力來提取純文本。

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;

// Load the PDF
var reader = new PdfReader("sample.pdf");
StringBuilder text = new StringBuilder();

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
}

// Output
Console.WriteLine(text.ToString());
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;

// Load the PDF
var reader = new PdfReader("sample.pdf");
StringBuilder text = new StringBuilder();

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
}

// Output
Console.WriteLine(text.ToString());
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.parser
Imports System.IO

' Load the PDF
Private reader = New PdfReader("sample.pdf")
Private text As New StringBuilder()

For i As Integer = 1 To reader.NumberOfPages
	text.Append(PdfTextExtractor.GetTextFromPage(reader, i))
Next i

' Output
Console.WriteLine(text.ToString())
$vbLabelText   $csharpLabel

開發人員需要手動遍歷頁面,這會增加代碼和在出現邊緣情況時出錯的可能性。

性能和可靠性

  • IronPDF 基於現代渲染引擎(Chromium)構建,非常適合處理現代 PDF,甚至那些嵌入字體、旋轉文字和多重版面的 PDF。 文字抽取具有布局感知能力,能更自然地保留空格。
  • iTextSharp,雖然功能強大,但在處理複雜格式時可能會遇到困難。 含有混合方向或非標準編碼的 PDF 文件可能會產生文字混亂或排序不正確的情況。

3. 成本與授權

功能 IronPDF iTextSharp


許可類型 商業版(提供免費試用) AGPL(免費)/ 商業(付費)

價格透明度 公共定價及永久授權 複雜層級和再分配規則

支援 專屬支援團隊 社群支持(除非授權)

在封閉源代碼應用中使用 ✅ 是(需要授權) ❌ 不適用於AGPL

📌 注意:如果您正在開發商業或專有軟體,iTextSharp AGPL將迫使您開源您的代碼,或者購買商業許可證。

IronPDF 為封閉源代碼專案提供了更靈活的授權模式。

4. 開發人員支援和文件

  • IronPDF:提供現代化的文件、視頻教程,以及快速的票務支持。
  • iTextSharp:文檔完善,但免費支持有限,除非您是付費客戶。

5. 跨程式庫摘要

標準 IronPDF iTextSharp


簡單性 ✅ 高效 – 單行文字提取 ⚠️ 中等 – 手動分頁迭代

性能 ✅ 快速且現代的解析 ⚠️ 在處理複雜或掃描的PDF時,速度較慢

商業友好 ✅ 是的,沒有 AGPL 限制 AGPL 限制在封閉源應用程式中的使用

支援與文件 ✅ 專注、敏捷 ⚠️ 社群依賴

.NET Core 支援 ✅ 完整 ✅ 完整

結論

在使用 C# 從 PDF 中提取文字時,IronPDF 和 iTextSharp 都是強大的工具——但它們適合不同類型的開發者。 如果您正在尋找一個現代、易於整合的解決方案,具有優秀的支持、積極維護的功能以及無縫的版面保留,IronPDF明顯地脫穎而出。 它減少了開發時間,提供直觀的 API,並且在 .NET 框架內的各種應用中運行良好,從網頁應用到企業系統。

另一方面,iTextSharp 仍然是對於已經融入其生態系統的開發人員或那些需要對文本提取策略進行細粒度控制的人來說的一個強烈選擇。 然而,其較高的學習曲線和缺乏商業支持可能會減緩需要快速擴展或維持乾淨代碼庫的項目進程。

對於重視速度、清晰度和可靠結果的 .NET 開發人員,IronPDF 提供了一個面向未來的途徑。 無論您是在構建文件自動化工具、搜索引擎還是內部儀表板,IronPDF 的強大功能和性能都將幫助您更快且更智能地交付。

👉 立即下載免費試用版來嘗試 IronPDF,親自體驗不同之處。 有了免費試用和開發者友好的 API,您可以在幾分鐘內開始使用。

現在開始使用IronPDF。
green arrow pointer

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
iTextSharp 文件審查與 IronPDF 比較
下一個 >
IronPDF 與 Puppeteer C#:比較