跳過到頁腳內容
產品比較

使用iTextSharp從PDF中提取文本VS IronPDF

從 PDF 文檔中提取文本是現代軟件項目中的常見需求,從處理發票到為搜索引擎挖掘內容。 開發人員需要可靠的庫,這些庫不僅能提供精確的結果,還能在 C# .NET 應用中帶來高效的集成體驗。 一些開發人員使用 OCR(光學字符識別)工具從掃描的文檔和圖像中提取數據,但有時工作需要一個穩健的文本提取工具。

但是市場上有多個 PDF 庫,選擇正確的工具可能會讓人不知所措。 Two libraries that often come up in the conversation are iTextSharp and IronPDF. 兩者都能從 PDF 中提取文本,但在可用性、支持、性能和定價方面存在顯著差異。 本文比較了這兩個庫,通過查看不同的代碼範例來展示它們如何處理文本提取,以幫助您決定哪個最適合您的項目。

IronPDF 與 iTextSharp 圖書館概覽

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

迎來IronPDF——一個為 .NET 構建的現代、開發者友好的 PDF 庫。 它通過直觀的 API、清晰的文檔和快速的支持簡化了常見的任務,如文本提取。 有了這個工具,開發人員可以輕鬆地從 PDF 文檔中提取圖像和文本,創建新的 PDF 檔案,實現 PDF 安全性,等等。

與 iTextSharp 不同,IronPDF 避免了複雜的底層結構,使您能更快更高效地工作。 無論您是在處理單頁還是數百個 PDF,它都使操作變得簡單。

它也在積極維護中,提供定期更新和直接的許可模式,包括免費試用和針對團隊和個人開發者的經濟計劃。

安裝與使用 IronPDF

您可以通過在 NuGet 包管理器控制台中運行以下命令安裝 IronPDF

Install-Package IronPdf

或者,您可以在方案畫面的 NuGet 包管理器中安裝它。 為此,導覽至“工具 > NuGet 包管理器 > 為方案管理 NuGet 包”。 然後,搜索 IronPDF,然後點選“安裝”。

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

安裝完成後,提取文本變得簡單明了:

using IronPdf;

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

// Extract text from the PDF
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
using IronPdf;

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

// Extract text from the PDF
string extractedText = pdf.ExtractAllText();

// Output the extracted text
Console.WriteLine(extractedText);
Imports IronPdf

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

' Extract text from the PDF
Private extractedText As String = pdf.ExtractAllText()

' Output the extracted text
Console.WriteLine(extractedText)
$vbLabelText   $csharpLabel

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

無需處理編碼、內容流或手動解析。 IronPDF 會在內部處理所有這些,只需最少的設置即可提供清晰、精確的輸出。然後您可以輕鬆地將提取的文本保存到一個新的文本文件中以便進一步操作或使用。

安裝 iTextSharp PDF 圖書館

要下載 iTextSharp 的核心包以生成 PDF,請使用以下命令:

Install-Package iTextSharp

您也可以通過解決方案的包管理器屏幕安裝 iTextSharp。 要執行此操作,您首先需要進入工具下拉選單,然後找到“NuGet 包管理器 > 為方案管理 NuGet 包”。 然後,只需搜索 iTextSharp 並點擊 "安裝"。

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

這裡有一個從單個 PDF 頁面提取文本的示例:

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

// Define the path to your PDF
string path = "sample.pdf";

// Open the PDF reader and document
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    // Use a simple text extraction strategy
    var strategy = new SimpleTextExtractionStrategy();

    // Extract text from the first page
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);

    // Output the extracted text
    Console.WriteLine(pageText);
}
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

// Define the path to your PDF
string path = "sample.pdf";

// Open the PDF reader and document
using (PdfReader reader = new PdfReader(path))
using (PdfDocument pdf = new PdfDocument(reader))
{
    // Use a simple text extraction strategy
    var strategy = new SimpleTextExtractionStrategy();

    // Extract text from the first page
    string pageText = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy);

    // Output the extracted text
    Console.WriteLine(pageText);
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser
Imports iText.Kernel.Pdf.Canvas.Parser.Listener

' Define the path to your PDF
Private path As String = "sample.pdf"

' Open the PDF reader and document
Using reader As New PdfReader(path)
Using pdf As New PdfDocument(reader)
	' Use a simple text extraction strategy
	Dim strategy = New SimpleTextExtractionStrategy()

	' Extract text from the first page
	Dim pageText As String = PdfTextExtractor.GetTextFromPage(pdf.GetPage(1), strategy)

	' Output the extracted text
	Console.WriteLine(pageText)
End Using
End Using
$vbLabelText   $csharpLabel

例如證實了 iTextSharp 的能力,但注意到大量的冗長性和額外的對像需要執行簡單的任務。

詳細比較

既然我們已經涵蓋了安裝和基本使用,我們來看一個更深入的比較,了解這兩個庫如何通過讓它們從多頁 PDF 文檔中提取文本來處理文本提取。

高級示例:用 IronPDF 從頁面範圍中提取文本

IronPDF 支持對頁面選擇和布局感知文本提取的細粒度控制。

using IronPdf;

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

// Define the page numbers to extract text from
int[] pages = new[] { 2, 3, 4 };

// Extract text from the specified pages
var text = pdf.ExtractTextFromPages(pages);

// Output the extracted text
Console.WriteLine("Extracted text from pages 2, 3, and 4:\n" + text);
using IronPdf;

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

// Define the page numbers to extract text from
int[] pages = new[] { 2, 3, 4 };

// Extract text from the specified pages
var text = pdf.ExtractTextFromPages(pages);

// Output the extracted text
Console.WriteLine("Extracted text from pages 2, 3, and 4:\n" + text);
Imports Microsoft.VisualBasic
Imports IronPdf

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

' Define the page numbers to extract text from
Private pages() As Integer = { 2, 3, 4 }

' Extract text from the specified pages
Private text = pdf.ExtractTextFromPages(pages)

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

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

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

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

// Load the 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());

// Close the PDF reader
reader.Close();
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// Load the 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());

// Close the PDF reader
reader.Close();
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.parser
Imports System.IO
Imports System.Text

' Load the 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())

' Close the PDF reader
reader.Close()
$vbLabelText   $csharpLabel

代碼比較摘要

IronPDF 和 iTextSharp 都能夠進行高級的 PDF 文本提取,但它們在複雜性和清晰度上的方法差別很大:

  • IronPDF 使其保持簡潔和可訪問。 其高級方法如 PdfDocument.ExtractAllText() 能讓您輕鬆提取結構化內容,只需極少的設置。代碼很簡單,即使對於首次接觸 PDF 處理的開發者也很容易實施。

  • iTextSharp 則需要對 PDF 結構有更深入的了解。 提取文本需要設置自定義渲染聆聽器,手動管理頁面,並逐行解釋布局數據。雖然功能強大,但它更冗長且不夠直觀,這使得 IronPDF 對於大多數 .NET 項目來說是更快和更可維護的選項。

但我們的比較並不止於此。 接下來,讓我們看看這兩個庫在其他領域的比較。

詳細比較: IronPDF vs iTextSharp

在評估 .NET 的 PDF 文本提取庫時,開發人員通常會考慮簡單性、性能和長期支持之間的平衡。 讓我們分解一下 IronPDFiTextSharp 如何在實際使用中進行比較,特別是在 C# 中從 PDF 中提取文本時。

1. 使用簡單性

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 the extracted text
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 the extracted text
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 the extracted text
Console.WriteLine(extractedText)
$vbLabelText   $csharpLabel

IronPDF 將簡單的方法調用抽象出來,如 ExtractAllText(),不需要模版代碼或解析邏輯。

iTextSharp:更冗長和低級

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

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

// 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 the extracted text
Console.WriteLine(text.ToString());
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.IO;
using System.Text;

// 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 the extracted text
Console.WriteLine(text.ToString());
Imports iTextSharp.text.pdf
Imports iTextSharp.text.pdf.parser
Imports System.IO
Imports System.Text

' 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 the extracted text
Console.WriteLine(text.ToString())
$vbLabelText   $csharpLabel

開發人員需要手動遍歷頁面,這導致更多代碼和在出現邊緣情況時可能出現的錯誤。

2. 性能和可靠性

  • 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 支持 完全支持 完全支持

結論

在从 PDF 中提取文本时,无论是 IronPDF 还是 iTextSharp 都是合格的工具,但它们服务于不同类型的开发人员。 如果您想要一个现代的、易于集成的解决方案并具有良好的支持、积极维护的特性以及无缝的布局保留,那么IronPDF显然脱颖而出。 它减少了开发时间,提供了直观的API,并且在 .NET 框架内的大范围应用中(从网络应用到企业系统)都运行良好。

另一方面,对于已经嵌入其生态系统或需要对文本提取策略进行细粒度控制的开发人员来说,iTextSharp 仍然是一个强有力的选择。 然而,其陡峭的学习曲线和缺乏同业支持可能会拖慢需要快速扩展或保持干净代码库的项目。

对于重视速度、清晰度和可靠结果的 .NET 开发人员来说,IronPDF 提供了未来可用的途径。 无论您是在构建文档自动化工具、搜索引擎还是内部仪表板,IronPDF 的强大功能和性能将帮助您更快、更智能地交付成果。

通过下载免费试用版,今天就试试 IronPDF,亲身体验其中的不同。 在拥有免费试用和开发者友好API的情况下,您可以在几分钟内开始使用。

請注意iTextSharp 是其各自所有者的註冊商標。 本網站未被 iTextSharp 授權、贊助或認可。所有產品名稱、商標和品牌均為其各自所有者的財產。 比較僅供信息參考,並反映撰寫時公開可用的信息。

常見問題解答

如何使用現代庫在 C# 中從 PDF 中提取文本?

您可以使用 IronPDF 利用其方法,如 PdfDocument.ExtractAllText(),從 PDF 中提取文本,這樣簡化了過程,並確保即使是複雜的文檔布局也能得到準確的結果。

IronPDF 和 iTextSharp 在文本提取方面的主要區別是什麼?

與 iTextSharp 相比,IronPDF 提供更直觀的 API 和更快的性能。它設計為能有效處理複雜的布局,並提供現代渲染引擎簡化文本提取,而 iTextSharp 需要更多的手工編碼和對 PDF 結構的理解。

IronPDF 如何處理來自掃描文檔的文本提取?

IronPDF 支持從標準 PDF 中提取文本。對於掃描文檔,可以集成像 IronOCR 這樣的 OCR 工具來從 PDF 中的圖像中提取文本。

IronPDF 用於商業項目有哪些授權優勢?

IronPDF 提供沒有 AGPL 限制的明確商業授權模式,使其適合封閉源應用。它為個人開發者和團隊提供經濟實惠的方案。

IronPDF 適合從具有複雜布局的 PDF 中提取文本嗎?

是的,IronPDF 非常適合從具有複雜布局的 PDF 中提取文本,因為其具有布局感知文本提取功能,確保格式和空間的準確保留。

如何將 PDF 處理庫整合到我的 C# 項目中?

您可以通過 NuGet 安裝 IronPDF 到 C# 項目中。在 NuGet 包管理器控制台中運行命令 Install-Package IronPdf 以將其添加到您的項目中。

使用 IronPDF 的開發者有哪些支持和資源可用?

IronPDF 提供綜合支持,包括現代文檔、視頻教程和快捷的基於票務的幫助,使其成為適合於集成到 .NET 項目的開發者友好工具。

IronPDF 能夠從 PDF 的特定頁面中提取文本嗎?

是的,IronPDF 允許使用 PdfDocument.ExtractTextFromPages() 等方法從特定頁面中提取文本,提供文本提取過程的細粒度控制。

為什麼推薦使用 IronPDF 給剛接觸 PDF 文本提取的開發者?

IronPDF 因其易用的 API、簡單的整合過程和詳細的支持資源推薦給新開發者,使其即使對 PDF 處理不熟悉的人也能輕鬆使用。

IronPDF 比其他庫提供哪些性能優勢?

IronPDF 由於其現代渲染引擎,提供增強的性能,優化了文本提取的速度,並有效處理複雜的 PDF 布局,使其比許多其他庫更快。

Curtis Chau
技術作家

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

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