我的程序读取PDF并尝试在用户空间中查找每个字形的坐标

我的程序读取PDF并尝试在用户空间中查找每个字形的坐标,pdf,Pdf,事情是这样的 q 0.1199951 0 0 0.1199951 0 0 cm 1 g 824 4101 267 389 re f Q q 0.1199951 0 0 0.1199951 0 0 cm 1 g 824 4853 267 25 re f Q q 0.1199951 0 0 0.1199951 0 0 cm 1 g 824 5241 267 25 re f Q q 0.1199951 0 0 0.1199951 0 0 cm 1 g 1090 578 3081 1988 re f Q

事情是这样的

q
0.1199951 0 0 0.1199951 0 0 cm
1 g
824 4101 267 389 re
f
Q
q
0.1199951 0 0 0.1199951 0 0 cm
1 g
824 4853 267 25 re
f
Q
q
0.1199951 0 0 0.1199951 0 0 cm
1 g
824 5241 267 25 re
f
Q
q
0.1199951 0 0 0.1199951 0 0 cm
1 g
1090 578 3081 1988 re
f
Q
q
0.1199951 0 0 0.1199951 0 0 cm
603 586 m
603 1800 l
649 1800 l
649 586 l
h
W n
8.3336724 0 0 8.3336724 0 0 cm
BT
/T1_0 5.04 Tf
0 1.0002 -1 0 76.8 70.32 Tm
(J)Tj  
我想问J的坐标是什么? 我的cropbox是0 0 612 792,旋转值是90

所以根据我的说法
Th=1默认值,
Tfs=5.04,从{/T1_0 5.04 Tf}
Trise=0默认值,

teststatematrix
5.04 10
0.5.04 0
01

Tm
0 1.0002 0
-100
76.8 70.32 1

TRM=textstatematrix X Tm
-15.0410
-5.040 0
76.800 70.320 1

所以
[x,y,1]=[76.8,70.32,1]x TRM=[-354.413 457.469 1]

所以用户空间中的x坐标是一个负数。你能解释一下我犯了什么错误吗?

OP计算的矩阵Trm为

文本呈现矩阵在PDF规范中描述如下:

从概念上讲,从文本空间到设备空间的整个转换可以由文本呈现矩阵Trm表示:

(ISO 32000-1-2008第9.4.2节)

OP的错误不在于计算这个矩阵,而在于使用它:这个矩阵包含了从文本空间到设备空间的整个转换

Tj和其他文本显示操作符应将要绘制的第一个字形的原点定位在文本空间的原点

(第9.2.4节ISO 32000-1:2008)

轮廓原点是轮廓坐标系中的点(0,0)

(ibidem)

因此,要确定OP的位置

放置字形
J
的原点,必须将该矩阵应用于原点
(0,0)
,而不是像OP那样应用于
(76.8,70.32)

因此,

i、 e.
J
的坐标是设备空间中的
(76.8,70.32)
。由于OP假设初始转换矩阵是身份矩阵,因此该设备空间本质上是默认用户空间


不幸的是,OP没有解释他正在寻找的坐标系中的坐标。因此,这些坐标可能不是他要找的坐标。

您可能需要研究和从中引用的文件。J的坐标应该是什么-您还必须知道在哪个坐标系中。先生,我有一些疑问,我在上面解释过,请您提出解决方案。您为什么要将TRM应用于[76.8,70.32,1]?您不应该将其应用于[0 0 1]?据我所知,文本空间中当前的X和Y坐标由Tm设置,分别等于76.8和70.32。请建议。非常感谢您这么好的解释。我搞错了,现在解决了问题。:)太好了。在这种情况下,您可能希望将答案标记为。
-1      5.041  0
-5.040  0      0
76.800 70.320  1
(J)Tj 
[x,y,1] = [0, 0, 1] X Trm = [76.8, 70.32, 1]