PDF Tm操作员

Die*_*con 3 pdf

我正在尝试突出显示PDF文档中的文本,但我找到了一个带有以下操作数的Tm运算符:

0 7.98 -7.98 0 90.8898 715.4183 Tm
Run Code Online (Sandbox Code Playgroud)

Tm运算符应该仅在其操作数上替换文本矩阵和文本行矩阵.根据Pdf参考,可以完成以下操作:

  • 翻译[1 0 0 1 tx ty]
  • 缩放[sx 0 0 sy 0 0]
  • 旋转[cos(角度)sin(角度)-sin(角度)cos(角度)0 0]
  • 歪斜[1 tan(alpha)tan(beta)1 0 0]

操作数的格式与上述任何转换都不匹配,这导致了以下问题.

  • 应该提到的前面提到的文本矩阵是什么?
  • 如何进行几次转换?例如缩放和旋转.

mkl*_*mkl 9

应该提到的前面提到的文本矩阵是什么?

你的矩阵

0 7.98 -7.98 0 90.8898 715.4183
Run Code Online (Sandbox Code Playgroud)

(这是PDF的缩写形式

?  0        7.98    0 ?
| -7.98     0       0 |
? 90.8898 715.4183  1 ?
Run Code Online (Sandbox Code Playgroud)

不幸的是,确实很难画大括号)

是90°旋转,7.98缩放和90.8898,715.4183的平移操作的组合.我将在下面对这些数字进行近似,7.98≅8,90.8898≅91和715.4183≅715:

?  0   8  0 ?   ?  0  8  0 ?   ?  1   0  0 ?
| -8   0  0 | = | -8  0  0 | x |  0   1  0 |
? 91 715  1 ?   ?  0  0  1 ?   ? 91 715  1 ?

  ? 8 0 0 ?   ?  0  1  0 ?   ?  1   0  0 ?
= | 0 8 0 | x | -1  0  0 | x |  0   1  0 |
  ? 0 0 1 ?   ?  0  0  1 ?   ? 91 715  1 ?
Run Code Online (Sandbox Code Playgroud)

如何进行几次转换?例如缩放和旋转

我们在上面的分解中有这样一个例子,

?  0  8  0 ?   ? 8 0 0 ?   ?  0  1  0 ?
| -8  0  0 | = | 0 8 0 | x | -1  0  0 |
?  0  0  1 ?   ? 0 0 1 ?   ?  0  0  1 ?
Run Code Online (Sandbox Code Playgroud)

8的缩放和90°的旋转的组合.