跳至页脚内容
产品比较

从PDF中提取文本在C#中:使用iTextSharp与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

IronPDF 可以通过运行 NuGet Package Manager Console 中的以下命令通过 NuGet 安装

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

[{i:(如果您正在构建商业或专有软件,iTextSharp AGPL 将强迫您开源代码或支付商业许可证。 IronPDF 为闭源项目提供更灵活的许可模式。)]

4. 开发者支持和文档

  • IronPDF:附带现代文档、视频教程和快速基于工单的支持。

  • iTextSharp:文档良好,但除非您是付费客户,否则有限的免费支持。

5. 跨库总结

标准 IronPDF iTextSharp
简单性 高 – 一行文本提取 中等 – 手动页面迭代
性能 快速现代解析 复杂或扫描的 PDF 上较慢
商业友好 是,没有 AGPL 限制 AGPL 限制闭源应用的使用
支持与文档 专门的,响应式的 依赖社区
.NET Core 支持 完整 完整

结论

在 C# 中从 PDF 中提取文本时,IronPDF 和 iTextSharp 都是有效的工具——但它们服务于不同类型的开发人员。 如果您正在寻找现代、易于集成的解决方案,具有出色支持、积极维护的功能和无缝布局保留,那么 IronPDF 明显脱颖而出。 它减少了开发时间,提供了直观的 API,并在 .NET 框架内的广泛应用中表现出色,从 Web 应用程序到企业系统。

另一方面,iTextSharp 仍然是那些已经嵌入其生态系统的开发人员或需要对文本提取策略进行精细控制的开发人员的强大选择。 然而,它更陡峭的学习曲线和缺乏商业支持可能会减慢需要快速扩展或保持干净代码库的项目。

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

立即试用 IronPDF,下载免费试用,亲自体验不同之处。 凭借免费试用和开发者友好的 API,您可以在几分钟内开始。

{i:(iTextSharp 是其各自所有者的注册商标。 本网站与 iTextSharp 无关,也未得到 iTextSharp 的支持或赞助。所有产品名称、徽标和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。]

常见问题解答

如何使用现代库从 PDF 中提取文本?

您可以使用 IronPDF 提取 PDF 中文本,通过其方法 PdfDocument.ExtractAllText(),简化流程并确保即使是复杂文档布局也能获得准确结果。

IronPDF 和 iTextSharp 在文本提取方面的关键区别是什么?

IronPDF 提供比 iTextSharp 更直观的 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 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。