C#PDFSharp:如何从PDF中删除文本的示例?

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

理想情况下,我宁愿避免任何forms的图像内容重新压缩,但如果不可能,也可以。

是如何做到的例子?

谢谢!

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

最近在这个post中讨论过: 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或任何其他适当的字符串搜索代码找到你想要的字符串。 如果你需要对格式化或定位做任何事情,那么祝你好运 – 从我所知道的,你将需要它。

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

链接

图书馆

编辑:

然后,如果要从图像中提取文本,则必须使用OCR库。

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

编辑2:

如果您不想从提取的图像中读取文本,则应编写新的PDF文档并将其全部放入其中。 为了编写PDF,我使用MigraDoc 。 使用该库并不困难。