【问题标题】:PDFBox 2.0 : Invisible text from PDFTextStripperPDFBox 2.0:来自 PDFTextStripper 的不可见文本
【发布时间】:2018-05-23 11:41:35
【问题描述】:

文件示例为here

我想我再次需要 mkl 的帮助(在附件中有一些隐藏的 () 字符是 PDFTextStripper 提取的。现在我看不出是什么使它不可见(例如,请参阅列6 个值 - 都在括号中:

Publix Liquors 1,600 2.5 1/1/2014 12/31/2018 ($ 24,000.00) ($ 4,032.00) ($ 28,032.00) BayCare Health Systems 3,200 5 7/30/2004 7/31/2018 ($ 51,200.00) ($ 9,648.00) ($ 60,848.00) 在选择期 8/11/2018 之前租金不变

.......

能否请您至少指出为什么它们在这种情况下是隐藏的? 提前致谢!

【问题讨论】:

    标签: java pdf pdfbox


    【解决方案1】:

    在这种情况下,您处理的是实际透明度。

    隐藏括号是由这样的指令块创建的

    q
    /Alpha3 gs
    0 0 0 rg
    BT
    0 Tr
    /Font0 14.299999 Tf
    1.0 0 0 -1.0 537.66486 195.42578 Tm
    0 0 Td
    <037F>
    Tj
    ET
    Q 
    

    资源中的扩展图形状态Alpha3声明为

    14 0 obj
    <<
      /CA 0
      /ca 0
    >>
    endobj 
    

    因此,/Alpha3 gs 将描边和填充不透明度都设置为 0,即使用填充或描边绘制的任何内容都是完全透明的。

    在 PDFBox PDFTextStripper 中,这些值可以在 processTextPosition 中从当前图形状态 (getGraphicsState) 作为属性 getAlphaConstantgetNonStrokeAlphaConstant 检索到

    【讨论】:

    • 谢谢!您能否指出一些资源,让我可以学习如何理解这些不同的说明?
    • 我从 PDF 规范(您可以在 Adob​​e 检索 ISO 32000-1 标准的副本:PDF32000_2008.pdf)以及对文本提取和编辑的普遍兴趣...许多 PDF 的内部结构。
    • 谢谢。有很多东西可以隐藏结果 PDF 中的文本,所以标准 PDFTextStripper 几乎没用......我想知道是否有任何库在做所有工作人员只返回我们在 pdf 中看到的内容
    • 您可能会惊讶地听到,虽然确实有很多方法可以在 PDF 中显示不可见文本,但这些方法通常很少使用。您遇到的示例数量令人震惊! ;) 在许多用例中,标准文本提取会返回所需数据。更常见的抱怨是原始布局不受尊重,特别是对于表格内容。话虽如此,在某些用例中,人们甚至想要检索不可见的文本,对他们来说,这不是错误,而是一项功能!
    • 无论如何,感谢您的大力帮助!希望不再有这样的方式:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2016-12-22
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多