
如何在 PDF 文档中删除页面
从 PDF 文档中提取文本是现代软件项目中的常见需求——从处理发票到为搜索引擎挖掘内容。 开发人员需要可靠的库,不仅能提供准确的结果,还能在 C# .NET 应用程序中提供高效的集成体验。 \u4e00\u4e9b\u5f00\u53d1\u4eba\u5458\u4f7f\u7528 OCR\uff08\u5149\u5b66\u5b57\u7b26\u8bc6\u522b\uff09\u5de5\u5177\u4ece\u626b\u63cf\u7684\u6587\u6863\u548c\u56fe\u50cf\u4e2d\u63d0\u53d6\u6570\u636e\uff0c\u4f46\u6709\u65f6\u5de5\u4f5c\u9700\u8981\u4e00\u4e2a\u5f3a\u5927\u7684\u6587\u672c\u63d0\u53d6\u5de5\u5177\u3002
但是市场上有多种 PDF 库,选择合适的工具可能令人不知所措。 经常提到的两个库是 iText 和 IronPDF。 两者都能从 PDF 中提取文本,但在可用性、支持、性能和定价上存在显著差异。 本文比较了这两个库,查看不同的代码示例来演示它们如何处理文本提取,帮助您决定哪一个最适合您的项目。
IronPDF 和 iText 库概述
iText 长期以来是.NET的流行开源 PDF 库,提供用于生成、操控和提取内容的强大工具。 作为基于 Java 的 iText 的 C# 移植版,它提供对 PDF 结构的深度控制——是高级用户的理想选择。 然而,这种灵活性伴随着陡峭的学习曲线和许可限制; 商业用途通常需要付费许可证以避免 AGPL 义务。
引入 IronPDF——一个为 .NET 构建的现代、开发者友好的 PDF 库。 它通过直观的 API、清晰的文档和响应的支持简化了如文本提取等常见任务。 使用此工具,开发人员可以轻松从 PDF 文档中提取图像和文本,创建新的 PDF 文件,实现 PDF 安全性等。
与 iText 不同,IronPDF 避免了复杂的底层结构,使您能够更快、更高效地工作。 无论您是处理单页还是数百个 PDF,它都保持简单。
它还得到积极维护,定期更新并具有简洁的许可模式,包括免费试用以及适合团队和个人开发者的实惠计划。
安装和使用 IronPDF
IronPDF 可以通过运行 NuGet Package Manager Console 中的以下命令通过 NuGet 安装:
或者,您可以通过解决方案的 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);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)注意: 此方法读取整个 PDF 文件并按读取顺序返回文本,相比传统库节省数小时的解析时间。
无需处理编码、内容流或手动解析。 IronPDF 内部处理所有这些,提供干净准确的输出,设置极少。然后您可以轻松地将提取的文本保存到新的文本文件中以便进一步操作或使用。
安装 iText PDF 库
要下载 iText 的核心 PDF 生成包,请使用以下命令:
您也可以通过解决方案屏幕的包管理器安装iText。 为此,您首先需要进入工具下拉菜单,然后找到"NuGet 包管理器 > 管理解决方案的 NuGet 包"。 然后,只需搜索iText,并点击"安装"。
使用 iText 从 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);
}Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser
Imports iText.Kernel.Pdf.Canvas.Parser.Listener
' Define the path to your PDF
Dim 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本例展示了 iText 的能力,但请注意为了执行简单任务所需的冗长性和附加对象。
详细比较
现在我们已经介绍了安装和基础使用,让我们来深入比较这两个库如何通过从多页 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);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)高级示例:使用 iText 从页范围提取文本
在 iText 中,您需要手动指定页范围并使用 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();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()代码比较总结
IronPDF 和 iText 都能进行高级 PDF 文本提取,但它们的方法在复杂性和清晰度上显著不同:
-
IronPDF 保持干净和易访问。 其高级方法如 PdfDocument.ExtractAllText() 允许您以最少的设置提取结构化内容。代码简单直接,即使是 PDF 处理的新手开发者也容易实现。
-
iText,另一方面,需要对PDF结构有更深的理解。 提取文本涉及设置自定义渲染监听器,手动管理页面,并逐行解释布局数据。虽然功能强大,但它更冗长且不够直观,使 IronPDF 对于大多数 .NET 项目来说是一个更快速和更易维护的选择。
但我们的比较尚未结束。 接下来,让我们看看这两个库在其他方面的比较。
详细比较:IronPDF vs iText
在为 .NET 评估 PDF 文本提取库时,开发人员通常权衡简单性、性能和长期支持之间的平衡。 让我们分解一下IronPDF和iText在实际使用中的比较,尤其是在 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);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)IronPDF 通过像 ExtractAllText() 这样的简单方法调用抽象了复杂性,不需要样板代码或解析逻辑。
iText:更冗长和低级
iText 需要手动解析每个页面并花费更多努力提取纯文本。
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())开发人员需要手动遍历页面,这会引入更多代码并在出现边缘案例时可能导致错误。
2. 性能和可靠性
-
IronPDF 基于现代渲染引擎 (Chromium) 构建,使其适合现代 PDF,即使是带有嵌入字体、旋转文本和多种布局的 PDF。 文本提取具有布局感知性,更自然地保留了间距。
-
iText,尽管强大,但可能在复杂格式上表现不佳。 带有混合方向或非标准编码的 PDF 文件可能产生乱码或文本顺序不正确。
3. 成本和许可
| 功能 | IronPDF | iText |
|---|---|---|
| 许可证类型 | 商用(可试用) | AGPL(免费)/ 商业版(付费) |
| 透明定价 | 公开定价 & 永久许可 | 复杂的层次和重分发规则 |
| 支持 | 专门的支持团队 | 社区支持(除非获得许可) |
| 在闭源应用中的使用 | 是(有许可证) | 不适用于 AGPL |
4. 开发者支持和文档
-
**IronPDF:**提供现代化的文档、视频教程和快速的工单支持。
-
**iText:**良好的文档支持,但如果您不是付费客户则免费支持有限。
5. 跨库总结
| 标准 | IronPDF | iText |
|---|---|---|
| 简单性 | 高 – 一行文本提取 | 中等难度 – 手动页面迭代 |
| 性能 | 快速现代解析 | 处理复杂或扫描的PDF文件速度较慢 |
| 商业友好 | 是,没有 AGPL 限制 | AGPL 限制闭源应用的使用 |
| 支持与文档 | 专门的,响应式的 | 社区依赖型 |
| .NET Core 支持 | Full | 满的 |
结论
在 C# 中从 PDF 提取文本时,IronPDF 和 iText 都是有能力的工具——但它们适用于不同类型的开发者。 如果您正在寻找现代、易于集成的解决方案,具有出色支持、积极维护的功能和无缝布局保留,那么 IronPDF 明显脱颖而出。 它减少了开发时间,提供了直观的 API,并在 .NET Framework内的广泛应用中表现出色,从 Web 应用程序到企业系统。
另一方面,对于已经嵌入其生态系统的开发者或需要对文本提取策略进行细化控制的开发者来说,iText 仍然是一个强力选项。 然而,它更陡峭的学习曲线和缺乏商业支持可能会减慢需要快速扩展或保持干净代码库的项目。
对于重视速度、清晰度和可靠结果的 .NET 开发人员来说,IronPDF 提供了一条面向未来的路径。 无论您是在构建文档自动化工具、搜索引擎还是内部仪表板,IronPDF 的强大功能和性能将帮助您更快、更智能地交付。
立即试用 IronPDF,下载免费试用,亲自体验不同之处。 凭借免费试用和开发者友好的 API,您可以在几分钟内开始。

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
相关文章

