使用XFINIUM.PDF在pdf中提取视觉对象的边界时,我注意到一些视觉对象实际上并不可见。
但是,我无法找到任何可以用来确定它是否实际可见的属性
与this相反,我不关心看不见的文字,因为它在图像后面。
这是我的意思的一个例子。出于某种原因,这个pdf包含很多在页面上实际看不到的文本。部分内容是实际可见文本的副本,另一部分可能来自下一页。 pdf上的黑色矩形是右上角所选文本的边界框。
所有不可见的文本都是Form XObject的子元素,但我不能忽略XObject,因为顶部的图形也是XObject的子元素,包括轴描述,我不知道想要排除那些。
我注意到可见文本位于PdfGrayColorSpace(包括轴描述)中,不可见文本位于PdfIccColorSpace中,但我认为忽略所有IccColorSpace的东西会与其他一些pdf失败。 我尝试将其转换为RGB但转换为(0,0,0),这显然没有用 知道如何确定视觉对象是否可见?
pdf可用here,示例在第9页。
答案 0 :(得分:1)
您已经确定隐形文本位于Form XObject中。它不可见的原因是它超出了XObject的范围:
339 0 obj
<<
/Type /XObject
/Subtype /Form
/BBox [ 253.4743 617.9332 447.7891 726.5818 ]
...
如果将边界框增加到整页的尺寸
...
/BBox [ 0 0 612 792 ]
...
第9页看起来像这样:
(显然XObject包含该页面的旧版本。可能是该图的原始文件丢失了,因为丢失了该页面的副本,使用了早期版本。)
因此:
我知道如何确定视觉对象是否可见?
测试Form XObject内容是否在 BBox 中。