Java PDFBox 2.0:来自PDFTextStripper的不可见文本

Java PDFBox 2.0:来自PDFTextStripper的不可见文本,java,pdf,pdfbox,Java,Pdf,Pdfbox,文件示例是 我想我再次需要mkl的帮助(在附件中有一些隐藏的()字符,PDFTextStripper会提取这些字符。现在我不知道是什么使它不可见(例如,请参见第6列的值-它们都在括号中: Publix Liquirs 1600 2.5 2014年1月1日2018年12月31日(24000.00美元)(4032.00美元)(28032.00美元) BayCare Health Systems 32005 7/30/2004 7/31/2018($51200.00)($9648.00)($60848

文件示例是

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

Publix Liquirs 1600 2.5 2014年1月1日2018年12月31日(24000.00美元)(4032.00美元)(28032.00美元) BayCare Health Systems 32005 7/30/2004 7/31/2018($51200.00)($9648.00)($60848.00)在选择期2018年11月8日之前,租金不变

你能至少指出为什么它们会隐藏在这个案子里吗?
提前感谢!

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

隐藏方括号是由如下指令块创建的

q
/阿尔法3 gs
0 0 rg
英国电信
0 Tr
/Font0 14.29999 Tf
1.0-1.0 537.66486 195.42578 Tm
0TD
Tj
ET
Q
资源中的扩展图形状态Alpha3被声明为

14 0 obj
>
endobj
因此,
/Alpha3 gs
将笔划和填充不透明度设置为0,即使用填充或笔划绘制的任何对象都是完全透明的


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

谢谢!您能指出一些我可以学习如何理解这些不同说明的资源吗?我从PDF规范中学习(您可以在Adobe上检索ISO 32000-1标准的副本:)对文本提取和编辑有着广泛的兴趣…例如,查看许多PDF的内部。谢谢。有太多的东西可以在结果PDF中隐藏文本,所以标准的PDFTextStripper几乎没有用…我想知道是否有库可以让所有工作人员只返回我们在PDFY中看到的内容。当事实上,在PDF中有很多不可见文本的方法,这些方法通常很少使用。您遇到的示例数量惊人!;)在许多用例中,标准文本提取返回想要的数据。更常见的抱怨是原始布局不受尊重,特别是对于表格内容。也就是说,在一些用例中,人们甚至想要检索不可见的文本,对他们来说,这不是一个bug,而是一个特性!无论如何,感谢您的巨大帮助!希望没有more剩余的方式:)