我正在尝试找出您应该如何在PDF文件中使用TJ运算符数组中的数字。
我正在使用示例:
[(A)120(W)120(A)95(Y again)]TJ
应该如何使用数字?
到目前为止,我一直在尝试单独处理它,但效果不佳。
期待阅读您的答案/评论以帮助更好地理解它。 (希望组合位移的其他计算是正确的。
另一个示例数组:
[(1.1)-1753(A)1(bo)-7(ut This Book)]TJ
更新:
我测试的示例文件:http://www.filedropper.com/9mei2018reduced
“不良”结果:
包含TJ的字符串和数字的数组:
[(1)-100(0)-99( )-101(m)-100(e)-100(i)-99( )-101(1)-100(9)-99(1)-100(8)
-99( )-101(d)-99(e)-100( )-101(r)-99(a)-101(i)-99(d)-100(s)-100( )-101(o)
-100(p)-100( )-100(O)-100(o)-100(s)-100(t)-100(e)-100(n)-100(d)-99(e)]TJ
在计算Tx时,我分别处理字符串和数字。对于数字(-100,-99,-101等)的计算,当我为w0参数添加字形宽度100而不是0时,结果是可以的...但是我不能保持此状态w0(100)值代表数字,因为其他pdf文件的98%都不正确。
答案 0 :(得分:2)
您似乎试图解释方程式
tx = ((w0 - Tj/1000) * Tfs + Tc + Tw) * Th
在字形空间而不是文本空间中的,至少您插入的值似乎表明这一点。而是以不可知的字体类型在文本空间中解释它。
尤其是:
w0
-使用PDF字体字典中width数组中各个字符的宽度,并将其除以1000;我希望大写A的值约为.667。Tj
-使用 TJ 操作数组参数中的值,例如120。Tfs
-使用来自图形状态的字体大小,它是来自相关 Tf 操作的字体大小参数,例如10。Tc
-使用来自图形状态的值,该值是来自相关 Tc 或“ 操作的参数。Tw
-使用0或(在单字节字符代码为32的情况下)使用来自图形状态的值,该值是来自相关的 Tw 或的参数” 操作。Th
-使用来自图形状态的值,该值是相关的 Tz 操作的参数除以100。不幸的是,您没有显示 x 坐标,这些坐标是针对字形原点计算的,因此我无法确定您的计算是否错误或代码中是否存在其他错误。
由于这些值大部分都是微不足道的(字体大小1,没有Tc或Tw,Th 1),因此我手动计算了前几个字符的字形起源的 x 坐标:
character x coordinate
'1' 734.204784
'0' 745.564784
' ' 756.908784
'm' 765.452784
'e' 779.468784
'i' 790.012784
' ' 796.076784
'1' 804.620784
'9' 815.980784
'1' 827.324784
'8' 838.684784
' ' 850.028784
'd' 858.572784
根据您的图片,此处的坐标已经很错误了。
我计算出的坐标似乎是正确的,但是它们特别匹配绘制字形“阴影”的矢量图形指令的坐标。
因此,请与您计算出的代码的坐标进行比较。如果您的计算方法有所不同,尤其是当它们之间的差异越来越大时,您仍然不按照上述说明进行计算,至少不能如此精确地进行计算(可能您使用的数字类型在这些计算中过于易损?)。如果您没有什么不同,那么您的问题不在于坐标的计算,而在于它们的使用。特别是您,然后将它们分别用于文本和矢量图形说明。