编辑
2025-09-19
C#
00

目录

准备工作
提取高亮文字
1. 读取PDF文件
2. 遍历页面和注释
3. 提取高亮的文本
完整代码示例
注意事项

处理PDF文件时,我们可能需要提取文档中的特定信息,例如高亮的文本。这在法律文件、教科书或任何需要重点标注的文档中尤其常见。iText7是一个功能强大的库,它不仅可以用于创建和编辑PDF文件,还可以用于读取PDF中的内容,包括高亮的文字。本文将详细介绍如何使用iText7在C#中提取PDF文件中的高亮文字。

准备工作

在开始之前,请确保您的项目中已经安装了iText7库。如果尚未安装,可以通过NuGet包管理器添加iText7库。在Visual Studio中,可以通过“工具”->“NuGet包管理器”->“管理解决方案的NuGet包”搜索并安装itext7

image.png

方便读取中文,需要安装一下这个亚洲字体包

image.png

提取高亮文字

高亮的文本在PDF中通常作为注释(或标注)存在。因此,要提取高亮的文本,我们需要遍历PDF中的注释,并找到那些类型为高亮的注释。以下是如何实现这一功能的步骤:

1. 读取PDF文件

首先,我们需要读取PDF文件并创建一个PdfDocument实例。

C#
using iText.Kernel.Pdf; using iText.Kernel.Pdf.Annot; var pdfPath = "path/to/your/document.pdf"; var pdfDoc = new PdfDocument(new PdfReader(pdfPath));

2. 遍历页面和注释

然后,我们遍历PDF文档的每一页,检查每页上的注释。

C#
for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++) { var page = pdfDoc.GetPage(i); var annotations = page.GetAnnotations(); foreach (var annotation in annotations) { // 处理注释 } }

3. 提取高亮的文本

在遍历注释时,我们需要检查注释的类型。如果注释是高亮类型(PdfName.Highlight),则提取与之关联的文本。

C#
foreach (var annotation in annotations) { if (annotation.GetSubtype().Equals(PdfName.Highlight)) { // 提取高亮文本 var content = annotation.GetContents(); Console.WriteLine($"Found highlighted text: {content}"); } }

完整代码示例

将上述步骤组合,我们得到了完整的代码示例,如下所示:

C#
static void Main() { string pdfPath = @"C:\Users\truei\Downloads\2.pdf"; ExtractHighlightedText(pdfPath); Console.ReadKey(); } public static void ExtractHighlightedText(string pdfPath) { using (PdfDocument pdfDocument = new PdfDocument(new PdfReader(pdfPath))) { for (int i = 1; i <= pdfDocument.GetNumberOfPages(); ++i) { PdfPage page = pdfDocument.GetPage(i); var annots = page.GetAnnotations(); foreach (var annot in annots) { if (annot.GetSubtype().Equals(PdfName.Highlight)) { // 获取高亮注释的位置 var rect = annot.GetRectangle().ToRectangle(); var filter = new TextRegionEventFilter(rect); var textExtractionStrategy = new FilteredTextEventListener(new LocationTextExtractionStrategy(), filter); var highlightedText = PdfTextExtractor.GetTextFromPage(page, textExtractionStrategy); Console.WriteLine($"Highlighted text on page {i}: {highlightedText}"); } } } } }

image.png

注意事项

  • 在处理完PDF文件后,确保调用pdfDoc.Close()方法关闭文档,以释放资源。
  • 请注意,不是所有高亮的文本都会有与之直接关联的内容。有时,高亮注释可能仅用于视觉效果,而实际文本可能需要通过文本提取API从注释的位置提取。
  • 本文介绍的方法依赖于PDF文件中注释的正确创建和使用。如果PDF文件的高亮文本不是以标准的注释形式添加的,那么这种方法可能无效。

通过上述步骤,您应该能够在C#项目中使用iText7库提取PDF文件中的高亮文本。这对于文档分析、内容提取等应用场景非常有用。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!