- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 CTM 矩阵计算上经历了不同的解决方案(其中一些是 this 和 this )。
我对内容流的了解是,当“ q ”遇到我们需要将单位矩阵插入 graphics_stack 并保持与下一个位置运算符(cm ,Tm,Td,TD)CTM 相乘时。当“ Q ”遇到时,我们需要弹出最后一个矩阵。
当“ BT ”在 position_stack 中遇到单位矩阵的 push 并保持与下一个位置 operator(cm , Tm, Td, TD) CTM 相乘时的文本定位解析。当“ ET ”遇到时,我们需要弹出最后一个矩阵。
这里有时我们需要与最后一个 CTM 矩阵相乘,有时只需与单位矩阵相乘。这些情况是什么时候发生的?
情况1:
如图 1 和图 2 所示,只是将新矩阵从 Td 替换为 Tm。从 2 到 3 又是最后一次 CTM 乘法。我怎么知道?(通过视觉我可以通过外观来判断)
案例2:
在这种情况下,矩阵推送和计算将如何进行?
案例3:
BT
TT_1 20 Tf
35.56 150.24533 Td _______________ 1
(some sample text) Tj
50.526 250.36 Td ________________ 2
(second line new replace) Tj
0 -16.2 Td _____________________ 3
(Line end.) Tj
ET
最佳答案
感兴趣的运营商
首先,我的印象是你混淆了两个不同的方面。您有当前的转换矩阵 (CTM) 以及文本和文本行矩阵。 CTM 受制于 厘米 , q , 和 问 .文本和文本行矩阵以 为准BT , 电话 , Td , ... 并且要确定绘制文本的确切位置和方向,您需要绘制文本时的文本矩阵和 CTM 的乘积。
PDF 规范 ISO 32000 第 1 部分或第 2 部分中描述了这些运算符如何更改矩阵。
来自 ISO 32000-1 表 57 – 图形状态运算符 –
BT
/GS0 gs
/T1_0 10 Tf
317 65 Td
1 0 0 1 0 0 1 0 0
T = T = 0 1 0 * 0 1 0 = 0 1 0
m lm 317 65 1 0 0 1 317 65 1
由于以前的值是身份,这可能看起来像是
的替代品。 Td 平移矩阵,但它实际上是一个乘法。
(F)Tj
10 × 1 0 0 1 0 0 1 0 0 10 0 0
T = 0 10 0 * 0 1 0 * 0 1 0 = 0 10 0
rm 0 0 1 317 65 1 0 0 1 317 65 1
此后Tm如上所述被更新。不幸的是,我们没有字体的宽度
T1_0 ,因此我们无法计算更新后的值。
1 0 0 1 370 87 Tm
1 0 0
T = T = 0 1 0
m lm 370 87 1
所以现在我们又知道了当前的 Tm 值。
-47 -22 Td
1 0 0 1 0 0 1 0 0
T = T = 0 1 0 * 0 1 0 = 0 1 0
m lm -47 -22 1 370 87 1 323 65 1
[(igure)-251(2.3:)-621(P)16...] TJ
10 × 1 0 0 1 0 0 1 0 0 10 0 0
T = 0 10 0 * 0 1 0 * 0 1 0 = 0 10 0
rm 0 0 1 323 65 1 0 0 1 323 65 1
如上所述,一次又一次地更新 Tm。
q
.24 0 0 .24 91 740 cm
0.24 0 0 1 0 0 0.24 0 0
CTM = 0 0.24 0 * 0 1 0 = 0 0.24 0
91 740 1 0 0 1 91 740 1
BT
133 0 0 133 0 0 Tm
133 0 0
T = T = 0 133 0
m lm 0 0 1
/TT1.0 1 Tf
.002 Tc
[(The)1( )1(Long )1(Tai)1(l)]TJ
1 × 1 0 0 133 0 0 0.24 0 0 32 0 0
T = 0 1 0 * 0 133 0 * 0 0.24 0 = 0 32 0
rm 0 0 1 0 0 1 91 740 1 91 740 1
如上所述,一次又一次地更新 Tm。
BT
TT_1 20 Tf
35.56 150.24533 Td _______________ 1
(some sample text) Tj
50.526 250.36 Td ________________ 2
(second line new replace) Tj
0 -16.2 Td _____________________ 3
(Line end.) Tj
ET
在下面的段落中,我使用四舍五入的值来专注于要点。
BT
TT_1 20 Tf
36 150 Td
1 0 0 1 0 0 1 0 0
T = T = 0 1 0 * 0 1 0 = 0 1 0
m lm 36 150 1 0 0 1 36 150 1
由于以前的值是身份,这可能看起来像是
的替代品。 Td 平移矩阵,但它实际上是一个乘法。
(some sample text) Tj
20 × 1 0 0 1 0 0 1 0 0 20 0 0
T = 0 20 0 * 0 1 0 * 0 1 0 = 0 20 0
rm 0 0 1 36 150 1 0 0 1 36 150 1
此后Tm如上所述被更新。不幸的是,我们没有字体的宽度
TT_1 ,因此我们无法计算更新后的值。
51 250 Td
1 0 0 1 0 0 1 0 0
T = T = 0 1 0 * 0 1 0 = 0 1 0
m lm 51 250 1 36 150 1 87 400 1
所以现在我们又知道了当前的 Tm 值。
(second line new replace) Tj
20 × 1 0 0 1 0 0 1 0 0 20 0 0
T = 0 20 0 * 0 1 0 * 0 1 0 = 0 20 0
rm 0 0 1 87 400 1 0 0 1 87 400 1
此后Tm如上所述被更新。不幸的是,我们没有字体的宽度
TT_1 ,因此我们无法计算更新后的值。
0 -16 Td
1 0 0 1 0 0 1 0 0
T = T = 0 1 0 * 0 1 0 = 0 1 0
m lm 0 -16 1 87 400 1 87 384 1
所以现在我们又知道了当前的 Tm 值。
(Line end.) Tj
20 × 1 0 0 1 0 0 1 0 0 20 0 0
T = 0 20 0 * 0 1 0 * 0 1 0 = 0 20 0
rm 0 0 1 87 384 1 0 0 1 87 384 1
此后Tm如上所述被更新。不幸的是,我们没有字体的宽度
TT_1 ,因此我们无法计算更新后的值。
q 0.1 0 0 0.1 0 0 cm
/R108 gs
0 g
q
...
Q
0 0 1 rg
q
...
Q
4.05 w
0 G
722.023 4082.13 m
722.023 4490.28 l
S
723.961 4488.25 m
2872.98 4488.25 l
S
404.1 w
0 0 0.199951 0 K
723.961 4284.18 m
2872.98 4284.18 l
S
4.05 w
0 G
720 4080.2 m
2876.94 4080.2 l
S
2874.91 4082.13 m
2874.91 4490.28 l
S
0 g
q
为什么您对这些说明的看法显示的数字不准确?以上是从流内容中复制粘贴的,不需要像那样更改数字...
q
0.1 0 0 0.1 0 0 cm
0.1 0 0
CTM = 0 0.1 0
0 0 1
/R108 gs
...
0 G
722.023 4082.13 m
722.023 4490.28 l
S
0.1 0 0
[722.023 4082.13] * 0 0.1 0 = [72.2023 408.213]
0 0 1
0.1 0 0
[722.023 4490.28] * 0 0.1 0 = [72.2023 449.028]
0 0 1
因此,一条线从 72.2023,408.213 到 72.2023,449.028。
723.961 4488.25 m
2872.98 4488.25 l
S
404.1 w
0 0 0.199951 0 K
723.961 4284.18 m
2872.98 4284.18 l
S
4.05 w
0 G
720 4080.2 m
2876.94 4080.2 l
S
2874.91 4082.13 m
2874.91 4490.28 l
S
关于pdf - CTM矩阵乘法与先前状态与PDF位置解析中的单位矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59573104/
考虑到当前的转换矩阵 (CTM),我试图弄清楚线宽如何影响 PDF 中的描边线。两个问题... 第一:如何使用 CTM 将线宽转换为设备空间? PDF 1.7 Reference第208页,描述了如何
我正在寻找一个 C++ 库,它允许在我的应用程序中轻松集成坐标转换矩阵 (CTM)。您可能知道来自 PDF 或 PostScript 的 CTM。 对于一个项目,我们使用 C++/Qt4 作为框架,它
看完Adobe PDF 1.7 (ISO 32000-1:2008) specification ,我仍然无法理解如何正确创建我的转换矩阵。 第 4.2/4.3 节中的规范声明如下: • Transl
以下问题:How can I have a custom default scene in the three.js editor?我尝试加载 .ctm 文件。不过,似乎并没有使用同样的方法。我必须做
我通读了 Transforms Quartz 2D 编程指南中的文档。其中似乎有两种进行转换的方法。一种方法是修改电流变换矩阵 (CTM)。它有如下方法: CGContextTranslateCTM
我以前在IOS上用openGL和metal渲染3d场景,我用的文件格式是OBJ和CTM。这些天我正在尝试 Scene Kit。似乎 SceneKit 只加载 DAE 文件。我在网上能找到的所有demo
我是一名优秀的程序员,十分优秀!