C#从PDF文档中提取文本

为了文档中的内容不轻易被编辑,我们通常将其格式设置为PDF。那我们若想要从PDF中获取文字内容的话,首先会想到复制功能,但是一次只能复制少量的文本内容,而且复制后重新输入到word或者txt文档中后排版可能会乱。因此本文将详细介绍如何提取PDF文档中文本的解决方案,该方案所使用的组件是Spire.PDF,对 C#, VB.NET, ASP.NET, ASP.NET MVC, .NET Core都完美支持。并且该方法对中文字符支持的非常好并能保持原来的样式,如分段,对齐方式等。

Spire.PDF产品无需安装,直接通过官网下载获得dll文件,添加引用到Visual Studio程序即可。

首先,请查看我的示例文档。

C#从PDF文档中提取文本_第1张图片

提取PDF文档中的所有文本:

//加载PDF示例文档
PdfDocument document = new PdfDocument();
document.LoadFromFile("Sample.pdf");

//实例化一个StringBuilder 对象
StringBuilder content = new StringBuilder();

//提取PDF所有页面的文本
foreach (PdfPageBase page in document.Pages)
{
    content.Append(page.ExtractText());
}

//将提取到的文本写为.txt格式并保存到本地路径
String fileName = "TextFromPDF.txt";
File.WriteAllText(fileName, content.ToString());
System.Diagnostics.Process.Start("TextFromPDF.txt");

提取到的全部文本:

C#从PDF文档中提取文本_第2张图片

我们在浏览pdf文档时, 当看到某个精彩的内容, 忍不住和朋友分享,这时候就需要提取PDF页面指定区域内的文本。 接下来介绍如何提取PDF页面中指定矩形区域内的文本。这里还是以刚刚的示例文档为例,我们只需要提取第一首诗中红色矩形框内的文本内容。

C#从PDF文档中提取文本_第3张图片

//加载PDF示例文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Sample.pdf");

//获取PDF第一页
PdfPageBase page = pdf.Pages[0];

//提取指定矩形区域内的文本
string text = page.ExtractText(new RectangleF(80, 120, 500, 50));

//将提取到的文本写为.txt格式并保存到本地路径
StringBuilder sb = new StringBuilder();

sb.AppendLine(text);
File.WriteAllText("Extract.txt", sb.ToString());

C#从PDF文档中提取文本_第4张图片

因为使用的是Spire.PDF试用版本,所以结果文档中多出了一行警告信息。测试项目,影响不大。有免费版Spire.PDF 可以提取所有PDF文档中的所有文本,并且无任何警告信息,但是免费版不支持提取指定区域内的文本。

你可能感兴趣的:(PDF)