在 PDF 文件中搜索正则表达式

本教程介绍如何使用 Aspose.PDF for .NET 搜索和检索与 PDF 文件中的正则表达式匹配的文本。提供的 C# 源代码逐步演示了该过程。

先决条件

在继续学习本教程之前,请确保您具备以下条件:

  • C# 编程语言的基础知识。
  • 安装了 Aspose.PDF for .NET 库。您可以从 Aspose 网站获取它或使用 NuGet 将其安装到您的项目中。

第 1 步:设置项目

首先在您首选的集成开发环境 (IDE) 中创建一个新的 C# 项目,并添加对 Aspose.PDF for .NET 库的引用。

第2步:导入必要的命名空间

在 C# 文件的开头添加以下 using 指令以导入所需的命名空间:

using Aspose.Pdf;
using Aspose.Pdf.Text;

第 3 步:加载 PDF 文档

设置 PDF 文档目录的路径并使用以下命令加载文档Document班级:

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");

确保更换"YOUR DOCUMENT DIRECTORY"与文档目录的实际路径。

第四步:使用正则表达式搜索

创建一个TextFragmentAbsorber对象并设置正则表达式模式以查找与该模式匹配的所有短语:

TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); //比如1999-2000年

代替"\\d{4}-\\d{4}"与您想要的正则表达式模式。

第 5 步:设置文本搜索选项

创建一个TextSearchOptions对象并将其设置为TextSearchOptions的财产TextFragmentAbsorber启用正则表达式使用的对象:

TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

第6步:在所有页面上搜索

接受文档所有页面的吸收器:

pdfDocument.Pages.Accept(textFragmentAbsorber);

步骤 7:检索提取的文本片段

使用以下命令获取提取的文本片段TextFragments的财产TextFragmentAbsorber目的:

TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

第 8 步:循环文本片段

循环检索到的文本片段并访问它们的属性:

foreach (TextFragment textFragment in textFragmentCollection)
{
	Console.WriteLine("Text: {0} ", textFragment.Text);
	Console.WriteLine("Position: {0} ", textFragment.Position);
	Console.WriteLine("XIndent: {0} ", textFragment.Position.XIndent);
	Console.WriteLine("YIndent: {0} ", textFragment.Position.YIndent);
	Console.WriteLine("Font - Name: {0}", textFragment.TextState.Font.FontName);
	Console.WriteLine("Font - IsAccessible: {0} ", textFragment.TextState.Font.IsAccessible);
	Console.WriteLine("Font - IsEmbedded: {0} ", textFragment.TextState.Font.IsEmbedded);
	Console.WriteLine("Font - IsSubset: {0} ", textFragment.TextState.Font.IsSubset);
	Console.WriteLine("Font Size: {0} ", textFragment.TextState.FontSize);
	Console.WriteLine("Foreground Color: {0} ", textFragment.TextState.ForegroundColor);
}

您可以修改循环内的代码以对每个文本片段执行进一步的操作。

使用 Aspose.PDF for .NET 搜索正则表达式的示例源代码

//文档目录的路径。
string dataDir = "YOUR DOCUMENT DIRECTORY";
//打开文档
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");
//创建 TextAbsorber 对象以查找与正则表达式匹配的所有短语
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); //比如1999-2000年
//设置文本搜索选项以指定正则表达式的用法
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
//接受所有页面的吸收器
pdfDocument.Pages.Accept(textFragmentAbsorber);
//获取提取的文本片段
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
//循环遍历片段
foreach (TextFragment textFragment in textFragmentCollection)
{
	Console.WriteLine("Text : {0} ", textFragment.Text);
	Console.WriteLine("Position : {0} ", textFragment.Position);
	Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
	Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
	Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
	Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
	Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
	Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
	Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
	Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}

结论

恭喜!您已成功学习如何使用 Aspose.PDF for .NET 搜索和检索与 PDF 文档中的正则表达式匹配的文本。本教程提供了从加载文档到访问提取的文本片段的分步指南。现在,您可以将此代码合并到您自己的 C# 项目中,以在 PDF 文件中执行高级文本搜索。

常见问题解答

问:“在 PDF 文件中搜索正则表达式”教程的目的是什么?

答:“在 PDF 文件中搜索正则表达式”教程旨在展示如何使用 .NET 的 Aspose.PDF 库来搜索和提取与 PDF 文件中指定正则表达式模式匹配的文本。本教程提供了全面的指导和示例 C# 代码来演示该过程。

问:本教程如何帮助您在 PDF 文档中使用正则表达式搜索文本?

答:本教程提供了使用 Aspose.PDF 库基于正则表达式模式在 PDF 文档中进行文本搜索的分步方法。它详细介绍了如何设置项目、加载 PDF 文档、定义正则表达式模式以及检索匹配的文本片段。

问:学习本教程的先决条件是什么?

答:在开始本教程之前,您应该对 C# 编程语言有基本的了解。此外,您需要安装 Aspose.PDF for .NET 库。您可以从 Aspose 网站获取它或使用 NuGet 将其集成到您的项目中。

问:如何设置我的项目来遵循本教程?

答:首先,在您首选的集成开发环境 (IDE) 中创建一个新的 C# 项目,并添加对 Aspose.PDF for .NET 库的引用。这将使您能够在项目中利用该库的功能。

问:我可以使用正则表达式搜索 PDF 文档中的文本吗?

答:是的,本教程演示了如何使用正则表达式从 PDF 文档中搜索和提取文本。它涉及利用TextFragmentAbsorber类并指定正则表达式模式以查找与提供的模式匹配的短语。

问:如何定义文本搜索的正则表达式模式?

答:要定义文本搜索的正则表达式模式,请创建一个TextFragmentAbsorber对象并使用设置其模式Text范围。替换默认模式"\\d{4}-\\d{4}"在教程的代码中添加您所需的正则表达式模式。

问:如何启用正则表达式用于文本搜索?

答:通过创建一个来启用正则表达式的使用TextSearchOptions对象并将其值设置为true。将此对象分配给TextSearchOptions的财产TextFragmentAbsorber实例。这可确保在文本搜索期间应用正则表达式模式。

问:我可以检索与正则表达式模式匹配的文本片段吗?

答:当然。对 PDF 文档应用正则表达式搜索后,您可以使用以下命令检索提取的文本片段:TextFragments的财产TextFragmentAbsorber目的。这些文本片段包含与指定正则表达式模式匹配的文本段。

问:我可以从检索到的文本片段中访问什么?

答:从检索到的文本片段中,您可以访问各种属性,例如匹配的文本内容、位置(X 和 Y 坐标)、字体信息(名称、大小、颜色)等。本教程循环中的示例代码演示了如何访问和显示这些属性。

问:如何对提取的文本片段自定义操作?

答:提取文本片段后,您可以在循环中自定义代码以对每个文本片段执行其他操作。这可以包括保存提取的文本、分析模式或根据您的要求实施格式更改。