关于c#:从PDF中仅提取粗体文本的最佳方法

Best way to extracting only the bold text from a PDF

iTextSharp是一个很棒的工具,我可以使用
PdfTextExtractor.GetTextFromPage(reader, iPage) +"";
并且效果很好,但是有没有办法从pdf中仅提取粗体文本(例如标题),而不是所有内容?

任何解决方案都是有用的,而与编程语言无关。谢谢


在iText中,您需要使用com.itextpdf.text.pdf.parser包中的类。

具体来说,您需要将PdfTextExtractor与用于检查字体名称的自定义TextExtractionStrategy一起使用。粗体字体的名称通常带有"粗体"字样。

潜在问题:
1)并非所有看起来像文本的东西都是用字体和字母渲染的。它可以是路径或位图。提取此类文本的唯一方法是使用OCR,并且无法获取字体信息。
2)字体编码。映射到您在PDF中看到的字形的字节可能没有从这些字节到实际字符信息的映射。
3)并非所有看起来粗体的文本都使用粗体。通过用相当细的线和通常的填充物抚摸文本轮廓来制作一些粗体文本。在这种情况下,文本渲染模式将设置为"笔画


对于这项工作,最好的选择之一就是pdflib.com的TET,它能够提取为TETML格式。适用于Windows,Mac OS X,Linux,Solaris,AIX,HP-UX ...

我不确定它是否确实能识别"标题"(因为PDF并不了解很多结构标记,只有视觉标记),但是可以肯定地告诉您每个标题的确切位置和字体字符。