我有一些PDF文档,其中的主要内容是矢量图形(位图图形)。像下面这样。
重要提示:这些是PDF中唯一的运算符类型。它不包含文本、图像或其他类型的对象。(我使用PDFBox调试器查看了所有内容)。
q
0.75 0 0 -0.75 36.12 573.96 cm
0 0 0 rg
0 0 m
2.24 0 l
2.24 5.92 l
3.04 5.92 l
3.04 0 l
5.28 0 l
5.28 -0.8 l
0 -0.8 l
0 0 l
h
f
Q
q
0.75 0 0 -0.75 43.800003 572.04 cm
0 0 0 rg
0 0 m
0 -1.44 -0.96 -1.76 -1.76 -1.76 c
-2.56 -1.76 -3.04 -1.28 -3.2 -0.96 c
-3.2 -0.96 l
-3.2 -3.36 l
-4 -3.36 l
-4 3.36 l
-3.2 3.36 l
-3.2 0.64 l
-3.2 -0.64 -2.56 -0.96 -1.92 -0.96 c
-1.12 -0.96 -0.8 -0.64 -0.8 0.16 c
-0.8 3.36 l
0 3.36 l
0 0 l
h
f
Q
.
.
.
以“Q”结尾的每个“q”块似乎都是一个小图像(在我的文档中是字符)。
这是它在Adobe Acrobat中的视觉效果:取自Adobe Acrobat的屏幕截图
我需要确定边界框的值(尺寸,如X-Y坐标和宽度和高度),就像它们只是一个对象一样。如下所示:Adobe Acrobat中的边界框表示
如上所述,我确定每个“字符”是PDF内容中的“q和Q”运算符块。
我想知道我们是否可以使用JAVA和PDFBOX获得这些尺寸(大边界框的尺寸),就像Adobe Acrobat能够做到的那样。
按照这里发布的相同方法:
pdfbox 2.0.2
他们提到逻辑应该放置在“strkePath()”方法上,但对于@TilmanHausherr提到的我的案例,我使用“fillPath()”在那里编写我的逻辑。
请注意,您定义的类应该从PDFGraphicsStreamEngine扩展。