【发布时间】:2012-04-02 10:49:36
【问题描述】:
这似乎是一个老问题,但我花了半个小时搜索了整个 SO,但没有找到详尽的答案。
我正在使用 PDFBox,我想从 PDF 文件中提取所有文本以及每个字符串的坐标。我正在使用他们的PrintTextLocations 示例(http://pdfbox.apache.org/apidocs/org/apache/pdfbox/examples/util/PrintTextLocations.html),但是对于我使用的那种 pdf(电子票),程序无法识别字符串,分别打印每个字符。输出是一个字符串列表(每个代表一个TextPosition 对象),如下所示:
String[414.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.0] s
String[418.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] a
String[423.38696,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=1.776001] l
String[425.16296,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] e
虽然我希望程序将字符串“sale”识别为唯一的TextPosition 并给我它的位置。
我还尝试使用 setSpacingTolerance() 和 setAverageCharacterTolerance() PDFTextStripper 方法,在标准值之上和之下设置不同的值(仅供参考,分别为 0.5 和 0.3),但输出根本没有改变。我哪里错了?提前致谢。
【问题讨论】:
-
啊,PDF的乐趣。根据创建它的原因,很可能 »text« 只是某些位置的字形集合,因此您必须根据位置进行猜测以找出单词和空格的位置。
标签: java pdfbox pdf-parsing