产品比较

在 C# 中使用 iTextSharp 阅读 PDF 文档的方法:

发布 2024年四月3日
分享:

在当今的数字时代、便携式文档格式(PDF)文件因其独立于平台的特性和格式的一致性,已成为文档交换的标准。 对于使用 C# 的开发人员来说,iTextSharp 库是与 PDF 无缝交互的强大库。 在本文中,我们将学习如何使用iTextSharp的基本步骤,并提供全面的指南,帮助你发掘这个多功能库的潜力。

如何使用 iTextSharp 在 C# 中读取 PDF 文档

  1. 打开或创建Visual Studio项目。

  2. 安装 iTextSharp 库。

  3. 添加必要的命名空间

  4. 选择要阅读的 PDF 文件。

  5. 创建 PDF 阅读器实例。

  6. 创建 PDF 文档实例

  7. 循环浏览文档的每一页,提取文本。

  8. 在控制台打印提取的文本。

什么是 iTextSharp?

iText 7iTextSharp 的前身是 iTextSharp,它是一个功能强大、用途广泛的 Java 和 .NET 库,用于创建、操作和提取 PDF 文档中的内容。 它提供一整套功能,包括文本和图像处理、表格填写、数字签名和水印。 无论是生成发票、报告还是交互式表单,iText 7 都能让开发人员高效地处理 PDF 文件。

阅读 PDF 文件

让我们讨论一些用 C# 阅读 PDF 文件的例子。 要开始使用,您需要将 iTextSharp 库添加到您的项目中。

安装 iTextSharp PDF 库

使用 Visual Studio 打开 C# 项目。 在顶部菜单中,转到 "查看",然后选择 "软件包管理器控制台"。这将在 Visual Studio 窗口底部打开 "软件包管理器控制台"。

在软件包管理器控制台中,确保 "默认项目 "下拉菜单设置为要安装 iTextSharp 软件包的项目。

运行以下命令安装 iTextSharp 库:

Install-Package itext7

该命令从 NuGet 软件包库中获取最新版本的 iTextSharp,并将其安装到项目中。 等待安装过程完成。 软件包管理器控制台将显示有关安装进度的信息。

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 1 - 使用 Visual Studio 中的 NuGet 软件包管理器控制台安装 iTextSharp,并添加以下命令:Install-package itext7。

使用 iTextSharp PDF 阅读器阅读 PDF 文档

我将使用以下 PDF 文档作为本示例的输入。

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 2 - 原始 PDF 文档

开始前,请添加以下命名空间:

using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using System.Text;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using System.Text;
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser
Imports System.Text
VB   C#

以下代码将读取上述 PDF 文件,提取内容,并将提取的内容打印到控制台。

public static void Main(string [] args)
{
    StringBuilder text = new StringBuilder();
    string fileName = @"D:/What_is_pdf.pdf";
    if (File.Exists(fileName))
    {
        using (PdfReader pdfReader = new PdfReader(fileName))
        {
            using (PdfDocument pdfDocument = new PdfDocument(pdfReader))
            {
                for (int page = 1; page <= pdfDocument.GetNumberOfPages(); page++)
                {
                    string currentText = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(page)); 
                    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
                    text.Append(currentText);
                }
            }
        }
    }
    Console.WriteLine(text.ToString());
}
public static void Main(string [] args)
{
    StringBuilder text = new StringBuilder();
    string fileName = @"D:/What_is_pdf.pdf";
    if (File.Exists(fileName))
    {
        using (PdfReader pdfReader = new PdfReader(fileName))
        {
            using (PdfDocument pdfDocument = new PdfDocument(pdfReader))
            {
                for (int page = 1; page <= pdfDocument.GetNumberOfPages(); page++)
                {
                    string currentText = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(page)); 
                    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
                    text.Append(currentText);
                }
            }
        }
    }
    Console.WriteLine(text.ToString());
}
Public Shared Sub Main(ByVal args() As String)
	Dim text As New StringBuilder()
	Dim fileName As String = "D:/What_is_pdf.pdf"
	If File.Exists(fileName) Then
		Using pdfReader As New PdfReader(fileName)
			Using pdfDocument As New PdfDocument(pdfReader)
				Dim page As Integer = 1
				Do While page <= pdfDocument.GetNumberOfPages()
					Dim currentText As String = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(page))
					currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)))
					text.Append(currentText)
					page += 1
				Loop
			End Using
		End Using
	End If
	Console.WriteLine(text.ToString())
End Sub
VB   C#

上述源代码读取 PDF 文件,提取每一页的文本,将其转换为 UTF-8,然后将整个文本内容打印到控制台。 这是一个如何使用 C# 中的 iTextSharp 库从 PDF 文件中提取文本的基本示例。

代码解释

1.文件路径和初始化

代码首先声明了一个名为textStringBuilder,用于积累从 PDF 中提取的文本。 它还定义了一个字符串变量 fileName,其中包含文档位置的路径。 在这种情况下,PDF 文件位于 "D:/What_is_pdf.pdf"。

2.文件存在性检查

如果(File.Exists(文件名))** 条件检查指定文件是否存在。 如果文件存在,则执行后面的代码块。

3.PDF 文件处理

if块中,它会使用PdfReader对象打开 PDF 文件。 然后,它会使用 PdfReader 创建一个 PdfDocument 文件实例。 for 循环遍历 PDF 文档的每一页。

4.从 PDF 文件中提取文本

对于每个 PDF 页面,它都会使用类 PdfTextExtractorGetTextFromPage 提取文本内容。(pdfDocument.GetPage(页码)) 方法。 提取的文本最初使用默认编码。

然后使用 Encoding.UTF8.GetString 将文本从默认编码转换为 UTF-8 编码。(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(当前文本))). 然后将转换后的文本添加到文本字符串中。

5.显示累积文本

最后,它会使用 Console.WriteLine 打印累积的文本。() 方法。

输出

提取的 PDF 文本输出如下:

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 3 - 控制台输出:使用 iTextSharp 从 PDF 文档 What_is_pdf.pdf 中提取文本,并在控制台中显示为纯文本。

通过这种方式,我们可以阅读 PDF 文件的内容。这种方法比较复杂,而且效率较低,因为要创建多个实例。 让我们来探索另一种更友好、更高效的方法。

IronPDF 简介

IronPDF 的功能和优点是一个多功能、高效的 C# 库,旨在简化和增强以编程方式创建 PDF, 编辑 PDF渲染 PDF 文档在 .NET 应用程序中,您可以使用这些工具。 IronPDF 使开发人员能够将 PDF 相关功能无缝集成到他们的项目中,并注重易用性和丰富的功能。 该库支持广泛的 PDF 操作,包括从头开始创建 PDF 文档、转换 PDF 文档、创建 PDF 文件、将 PDF 文件转换为 PDF 文件。将 HTML 内容转换为 PDF从 PDF 中提取文本和图像从现有的 PDF 文件中提取。 IronPDF 直观的应用程序接口为开发人员提供了友好的用户体验,使他们能够毫不费力地生成动态和交互式 PDF。 无论是添加水印、注释还是加密文档,IronPDF 都能让开发人员根据自己的具体要求定制 PDF。 作为一种可靠的解决方案,IronPDF 在从报表生成、文档管理到网络开发等各种应用中都发挥了重要作用,它提供了一套全面的工具来简化 .NET 环境中与 PDF 相关的任务。

安装 IronPDF 库

在 Visual Studio 中使用软件包管理器控制台

使用 NuGet 软件包管理器控制台,使用以下命令将 IronPDF 下载到项目中。

Install-Package IronPdf

此命令将下载并安装IronPDF NuGet 软件包连同其依赖项一起添加到项目中。

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 4 - 使用 NuGet 软件包管理器控制台安装 IronPDF 库,输入以下命令:Install-package IronPDF。

使用 NuGet 管理解决方案软件包

在 NuGet 的浏览选项卡中,搜索 "IronPDF "库并点击安装。

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 5 - 使用管理解决方案的 NuGet 包安装 IronPdf,方法是在 NuGet 包管理器的搜索栏中搜索 IronPDF,然后选择项目并点击安装按钮。

使用 IronPDF 阅读 PDF 文件

现在,让我们用以下方法来阅读同一个 PDF 文件IronPDF 综合指南. 以下代码将从输入的 PDF 文档中提取文本。

using IronPdf;
public static void Main(string [] args)
{
    var pdfDocument = PdfDocument.FromFile(@"D:/What_is_pdf.pdf");
    string text = pdfDocument.ExtractAllText();
    Console.WriteLine(text);
}
using IronPdf;
public static void Main(string [] args)
{
    var pdfDocument = PdfDocument.FromFile(@"D:/What_is_pdf.pdf");
    string text = pdfDocument.ExtractAllText();
    Console.WriteLine(text);
}
Imports IronPdf
Public Shared Sub Main(ByVal args() As String)
	Dim pdfDocument = PdfDocument.FromFile("D:/What_is_pdf.pdf")
	Dim text As String = pdfDocument.ExtractAllText()
	Console.WriteLine(text)
End Sub
VB   C#

上述代码读取名为 "What_is_pdf.pdf "的 PDF 文件,从中提取所有文本内容,并在控制台中显示提取的文本。

代码解释

1.加载 PDF 文档

代码首先从名为 "What_is_pdf.pdf "的文件中加载 PDF 文档。 它使用 PdfDocument.FromFile() 从指定文件创建PDFDocument对象的方法。

2.提取所有文本

接下来,它会从加载的 PDF 文档中提取所有文本内容。 提取所有文本(pdfDocument.ExtractAllText() 方法以单个字符串的形式返回 PDF 中的全部文本。

3.显示提取的文本

最后,提取的文本将存储在 text 变量中。 代码使用 Console.WriteLine 将提取的文本打印到控制台(文本) 方法。

输出

如何使用 iTextSharp 在 C# 中读取 PDF 文档::图 6 - 控制台输出:使用 IronPDF 从 PDF 文档 What_is_pdf.pdf 中提取文本,并以纯文本形式显示在控制台中。

IronPDF 还提供了一种从 PDF 文件中逐页提取文本的方法。

逐页阅读 PDF 文件

以下代码将使用 IronPDF 逐页读取 PDF 文档。

using IronPdf;
public static void Main(string [] args)
{
    StringBuilder sb = new StringBuilder();
    using PdfDocument pdf = PdfDocument.FromFile(@"D:/What_is_pdf.pdf");
    for (int index = 0; index < pdf.PageCount; index++)
    {
        sb.Append (pdf.ExtractTextFromPage(index));
    }
    Console.WriteLine(sb.ToString());
}
using IronPdf;
public static void Main(string [] args)
{
    StringBuilder sb = new StringBuilder();
    using PdfDocument pdf = PdfDocument.FromFile(@"D:/What_is_pdf.pdf");
    for (int index = 0; index < pdf.PageCount; index++)
    {
        sb.Append (pdf.ExtractTextFromPage(index));
    }
    Console.WriteLine(sb.ToString());
}
Imports IronPdf
Public Shared Sub Main(ByVal args() As String)
	Dim sb As New StringBuilder()
	Using pdf As PdfDocument = PdfDocument.FromFile("D:/What_is_pdf.pdf")
		For index As Integer = 0 To pdf.PageCount - 1
			sb.Append(pdf.ExtractTextFromPage(index))
		Next index
		Console.WriteLine(sb.ToString())
	End Using
End Sub
VB   C#

上述代码读取名为 "What_is_pdf.pdf "的 PDF 文件,提取每一页的文本内容,并将合并后的文本打印到控制台。

代码解释

1.初始化和 PDF 加载

创建一个名为 sb 的 StringBuilder,用于积累从 PDF 中提取的文本。 使用说明确保资源得到妥善处置。 使用 PdfDocument.FromFile 方法从 "D:/What_is_pdf.pdf "路径加载 PDF 文件,创建名为 PDF 的 PdfDocument 对象。

2.从页面中提取文本

for 循环遍历加载的 PDF 文档的每一页。 每页(以指数为索引)使用 pdf.ExtractTextFromPage 提取文本内容(索引). 使用 sb.Append 将提取的文本附加到 StringBuilder 中。().

3.显示累积文本

最后,使用 sb.ToString 将累积文本转换为单个字符串(). 使用 Console.WriteLine 将整个提取文本打印到控制台() 方法。

结论

总之,在 C# 中处理 PDF 需要了解字节数组、文档信息字典、交叉引用表、新文件实例和静态字节等基本元素。 第一个使用 iTextSharp 的代码展示了一种功能性方法,而第二个使用 IronPDF 的代码则提供了一种更简单、更高效的方法。 IronPDF易于使用的 API 简化了涉及交叉引用表、页面字典和间接引用的任务。 无论是只处理文档信息中的 xref,还是处理安全 PDF 的私钥方面,IronPDF 都是一个多功能解决方案。

开发商寻求探索IronPDF 许可证信息. IronPDF 将客户满意度放在首位,确保开发人员在与 PDF 相关的任务中发现价值并提高效率,使其成为寻求可靠且功能丰富的 PDF 库的用户的不二之选。

有关如何使用 IronPDF 的更多信息,请参阅此页IronPDF文档链接。

< 前一页
如何使用iTextSharp在C#中向PDF添加页码
下一步 >
iTextSharp读取PDF替代方案(开发人员教程)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >