C#PDFSharp:如何从PDF中剥离文本的示例

本文关键字:文本 剥离 PDF C#PDFSharp | 更新日期: 2023-09-27 18:26:51

我有一个相当简单的任务:我需要读取一个PDF文件并写出它的图像内容,同时忽略它的文本内容。所以本质上我需要做"保存为文本"的补充。

理想情况下,我希望避免对图像内容进行任何形式的重新压缩,但如果不可能,也可以。

这些例子是如何做到的吗?

谢谢!

C#PDFSharp:如何从PDF中剥离文本的示例

使用PDFsharp从PDF文件中提取文本不是一项简单的任务。

这是最近在这个线程中讨论的:https://stackoverflow.com/a/9161732/162529

使用PdfSharp从PDF中提取文本实际上非常容易,这取决于文档类型和您打算用它做什么。如果文档中的文本是文本,而不是图像,并且您不关心位置或格式,那么这很简单。此代码获取我正在使用的PDF中第一页的所有文本:

var doc = PdfReader.Open(docPath);
string pageText = doc.Pages[0].Contents.Elements.GetDictionary(0).Stream.ToString();

doc.Pages.Count提供页面总数,您可以通过带有索引的doc.Pages数组访问每个页面。我不建议在这里使用foreach和Linq,因为接口没有很好地实现。传递到GetDictionary的索引是针对哪个PDF文档元素的——这可能会因文档的生成方式而异。如果你没有得到你想要的文本,试着循环浏览所有的元素。

这样生成的文本将充满各种PDF格式代码。如果您只需要提取字符串,那么您可以使用Regex或任何其他合适的字符串搜索代码来找到您想要的字符串。如果你需要对格式化或定位做任何事情,那么祝你好运——据我所知,你会需要它的。

PDFSharp库从.pdf文件中提取图像的示例:

链路

编辑:

若要从图像中提取文本,必须使用OCR库。

有两个好的OCRs tessnet和MODI
链接到堆栈上的线程
但我完全可以推荐我现在正在使用的MODI。一些示例@codeproject。

编辑2:

如果你不想从提取的图像中读取文本,你应该写一个新的PDF文档,并将它们全部放入其中。对于写PDF,我使用MigraDoc。使用那个图书馆并不困难。