如何在 .NET 中从 PDF 提取文本
如何在 .NET 中提取 PDF 文本
本指南介绍如何使用 absorber API 从 PDF 页面提取文本。
先决条件
| 需求 | 细节 |
|---|---|
| 运行时 | .NET 8.0 或更高版本 |
| 包 | dotnet add package Aspose.Pdf.Foss |
提取页面中的所有文本
TextAbsorber 将页面上的所有文本收集为一个字符串。创建一个
实例,将其传递给 Page.Accept,并从 Text 属性读取结果。
这是在需要不带位置信息的纯文本输出时最简单的方法。
using var doc = Document.Open(pdfBytes);
var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);
Console.WriteLine(absorber.Text);提取结构化文本片段
当您需要在文本旁边获取位置、字体和大小的元数据时,
使用 TextFragmentAbsorber 替代。每个 TextFragment 通过 Position 属性公开其边界坐标。
var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"{fragment.Text} at ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
}使用正则表达式搜索
将正则表达式模式传递给 TextFragmentAbsorber,以跨越
所有页面。此功能对于定位电话号码、日期或其他
结构化数据模式在文档中非常有用。
var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);
foreach (var f in absorber.TextFragments)
Console.WriteLine(f.Text);关键类
| 类 | 目的 |
|---|---|
TextAbsorber | 将所有文本提取为字符串 |
TextFragmentAbsorber | 结构化文本提取 |
TextFragment | 带有位置和字体的文本 |
FontRepository | 字体查找 |