如何从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 中没有“带下划线的文本”之类的东西。有文字(甚至可能是图像)和线条。你有一个不可能完成的任务。 我认为你是对的。当我用 Adob​​e Acrobat 打开 pdf 文件时,并不是所有的下划线都可以识别,有些被认为是线条图形。真的很奇怪。 【参考方案1】:

使用 itext 可能无法实现,但您可以使用 pdfbox在某种程度上实现此目的

看看这个:https://***.com/a/40039407/4353762

但是注意在某些情况下它可能不起作用,库需要知道字体和字体的描述符。如果你抛出一个未知类型的 pdf,那么描述符将返回 null 并且代码将简单地以 NullPointerException 中断。

如果您想手动处理 NullPointerExceptions,那么您可能需要查看 underlinesstrikeThrough 方法 PDFStyledTextStripper.java

【讨论】:

"使用 itext 可能无法实现,但您可以使用 pdfbox 在某种程度上" 实现这一点 - 实际上两者都可以库,因为为文本和路径提取的数据对于两个库来说基本上是相同的,只是呈现方式有所不同。

以上是关于如何从PDF文件中获取带下划线的文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 中的印地语 PDF 文件中提取文本

如何从 PDF 文件中提取文本和文本坐标?

PDF找出文本是不是带下划线或表格单元格

从 pdf 中提取表格(到 excel),pref。带 vba

怎么知道PDF是扫描版

使用ElasticSearch / Symfony从pdf文件获取数据