产品比较

使用iTextSharp VS IronPDF从C#中的PDF提取文本

介绍

从PDF文档中提取文本是现代软件项目中的常见需求——从处理发票到为搜索引擎挖掘内容。 开发人员需要可靠的库,这些库不仅提供准确的结果,还在 C# .NET 应用程序中提供高效的集成体验。 一些开发人员使用OCR(光学字符识别)工具从扫描文档和图像中提取数据,但有时工作需要一个强大的文本提取工具。

然而,市场上有多种PDF库,选择合适的工具可能会让人感到不知所措。 在谈话中经常提到的两个库是iTextSharpIronPDF。 两者都可以从PDF中提取文本,但在可用性、支持、性能和定价方面有显著不同。 本文比较了这两个库,查看了不同的代码示例以展示它们如何处理文本提取,从而帮助您决定哪个最适合您的项目。

IronPDF和iTextSharp库概述

iTextSharp 长期以来一直是一个流行的开源 PDF 库,用于 .NET,提供强大的工具用于生成、操作和提取内容。 作为基于Java的iText的C#移植,它提供对PDF结构的深度控制,非常适合高级用户。 然而,这种灵活性伴随着陡峭的学习曲线和许可限制; 商业用途通常需要付费许可证以避免 AGPL 义务。

进入IronPDF——一个为.NET构建的现代开发者友好的PDF库。 它通过直观的API、清晰的文档和响应迅速的支持,使文本提取等常见任务更加简化。 使用此工具,开发人员可以轻松从PDF文档中提取图像和文本,创建新的PDF文件,实施PDF安全性等。

与iTextSharp不同,IronPDF避免了复杂的低级结构,使您能够更快更高效地工作。 无论您是在处理单页还是数百个PDF文件,它都能保持简洁。

它同样得到了积极的维护,定期更新并采用简单明了的许可模式,包括免费试用和适合团队及单独开发者的经济实惠计划。

安装和使用IronPDF

--LIBRARY_NUGET_INSTALL_BLOCK--

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 与 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

开发人员需要手动遍历页面,这会引入更多代码,并在出现边缘情况时增加出现错误的可能性。

2. 性能和可靠性

  • IronPDF 基于现代渲染引擎 (Chromium) 构建,非常适合现代 PDF,即使是那些嵌入字体、旋转文本和多重布局的文件。 文本提取具有布局感知功能,并更自然地保留间距。
  • iTextSharp虽然功能强大,但在处理复杂格式时可能会遇到困难。 包含混合方向或非标准编码的PDF文件可能会导致文本乱码或顺序不正确。

3. 成本和许可

功能 IronPDF iTextSharp


许可证类型 商业版(提供免费试用) AGPL(免费)/ 商业(付费)

价格透明度 公开定价与永久许可 复杂的层级和重新分配规则

支持 专门支持团队 社区支持(除非有许可)

在闭源应用中使用 ✅ 是(需要许可证) ❌ 不适用于 AGPL

📌 注意:如果您正在构建商业或专有软件,iTextSharp AGPL将强制您开源代码,或者购买商业许可证。

IronPDF 为闭源项目提供更灵活的许可模式。

4. 开发者支持和文档

  • IronPDF:提供现代文档、视频教程和快速的工单支持。
  • iTextSharp:文档良好,但除非您是付费客户,否则免费的支持有限。

5. 跨库总结

标准 IronPDF iTextSharp


简单性 ✅ 高效 – 单行文本提取 ⚠️ 中等 – 手动页面迭代

性能 ✅ 快速现代的解析 ⚠️ 在处理复杂或扫描的PDF时速度较慢

商业友好 ✅ 是的,没有 AGPL 限制 ❌ AGPL限制在闭源应用程序中的使用

支持与文档 ✅ 专注,响应迅速 ⚠️ 社区依赖

.NET Core 支持 ✅ 完整 ✅ 完整

结论

在从PDF中提取C#文本时,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#:比较