如何从PDF文件中获取带下划线的文本?
Posted
技术标签:
【中文标题】如何从PDF文件中获取带下划线的文本?【英文标题】:How to get the underlined text from PDF file? 【发布时间】:2016-07-12 16:29:44 【问题描述】:大家! 我尝试通过 itext 从 PDF 文件中获取一些带下划线的文本,这对我来说似乎非常困难。找了很久的解决方法,学会了如何获取文本的fontfamily、fontsize和文本位置。但是,没有下划线。 期待您的帮助! 谢谢!
【问题讨论】:
嗨,你有什么尝试吗?请展示一些代码工作。 从 PDF 的角度来看,“下划线”实际上只是一条恰好在文本附近但与文本无关的线。如果您想获得下划线,则必须查找每一行(或者可能是矩形或更糟)并将其与文本位置进行比较。您(可能)至少可以过滤具有相同y
坐标的所有行。如果 PDF 被标记,确实存在一个可能的条目,但我不知道是否有人使用它。我会说这是一个相当复杂的主题。
@ChrisHaas 说得很好,更简单地说……PDF 中没有“带下划线的文本”之类的东西。有文字(甚至可能是图像)和线条。你有一个不可能完成的任务。
我认为你是对的。当我用 Adobe Acrobat 打开 pdf 文件时,并不是所有的下划线都可以识别,有些被认为是线条图形。真的很奇怪。
【参考方案1】:
使用 itext 可能无法实现,但您可以使用 pdfbox在某种程度上实现此目的
看看这个:https://***.com/a/40039407/4353762
但是注意在某些情况下它可能不起作用,库需要知道字体和字体的描述符。如果你抛出一个未知类型的 pdf,那么描述符将返回 null 并且代码将简单地以 NullPointerException 中断。
如果您想手动处理 NullPointerExceptions,那么您可能需要查看 underlines 和 strikeThrough 方法 PDFStyledTextStripper.java
【讨论】:
"使用 itext 可能无法实现,但您可以使用 pdfbox 在某种程度上" 实现这一点 - 实际上两者都可以库,因为为文本和路径提取的数据对于两个库来说基本上是相同的,只是呈现方式有所不同。以上是关于如何从PDF文件中获取带下划线的文本?的主要内容,如果未能解决你的问题,请参考以下文章