1. Pdf坐标空间

坐标空间决定了各个pdf对象如何显示。对象的位置、大小、转向等信息,这些信息的表示采取的是笛卡尔坐标系,坐标空间由如下三个因素决定:

  • 坐标原点位置

  • 坐标系X轴、y轴的方向

  • 坐标系每个轴的单位长度

每个坐标空间之间的数据映射关系由转换矩阵决定。简单的解释即:y(目标空间)=A(变换矩阵)x(源空间)+b(常向量)

PDF中坐标系统分为设备坐标空间和用户坐标空间。

  • 设备坐标空间(device space)

决定了pdf对象最终的显示效果

  • 用户坐标空间(User space)

由于各设备的坐标空间的不一致,PDF又定义了用户坐标空间,以保证各种对象的相对关系在设备上显示时能够保持一致,从而达到与设备无关的显示效果。

PDF为不同的对象定义了不同的坐标空间,比如文字对应文字坐标空间 【text space】,字形、表单对象、位图、颜色模式等,各个不同的空间之间的关系如下图所示.

具体某个对象的坐标空间定义和对象的常见坐标表示见后续博文。

PDF坐标系统_坐标变换

图片来源于PDF规范。

PDF文件中页面上定义坐标空间由cropbox指定定义,大小默认为72dpi,PS3中定义的默认坐标空间原点为左下角,大小默认为72dpi。

用户空间坐标单位由用户定义,常见的单位有:厘米、英寸等,对于显示和打印来说,设备空间的坐标单位为像素点。

两种不同的单位之间的转换参考:换算关系



2. Pdf坐标变换

坐标转换矩阵定义了各个坐标空间之间的关系。坐标转换主要包含了几何学中的的基础变换关系:平移、缩放、旋转、拉伸等四种变换。

几何变换的解释和说明可以参考百度百科: 仿射变换

PDF系统中变换矩阵采取如下向量表示:

(a b 0)

(c d 0)

(e f 1)

                           (a b 0)

(x’,y’,1)= (x,y,1)* (c d 0)

                           (e f 1)

x’ = a * x + c * y + e

y’ = b * x + d * y + f

由于变换矩阵中用于二维坐标系统时,变换矩阵第三列总是0 0 1,因此pdf文件中变换矩阵定义为(a b c d e f)

  • 平移变换(Translate)

矩阵:(1,0,0,1,tx, ty)

即 x’ = x + tx

y’ = y + ty

变换后,坐标原点移位,其余不变。

  • 缩放变换(Rotate)

矩阵: [sx, 0, 0, sy, 0, 0]

即 x’ = sx * x

y' = sy * y

缩放变换后,坐标轴单位变位sx,sy,轴与原点方向不变

  • 旋转变换(Rotate)

矩阵: [cosθ,sinθ,-sinθ,cosθ, 0, 0]

即: x’ = cosθ * x – sinθ * y

y' = sinθ * x + cosθ* y

θ为旋转角度,逆时针旋转时角度为正.

旋转变换后,坐标轴单位、原点不变,轴方向改变角度θ

  • 斜变形变换(skew)

矩阵: [1, tanα, tanβ ,1, 0, 0]

即 x’ = x + tanα * y

y' = tanβ * x + y

斜变形变换后,坐标原点、单位不变,x轴逆转α度,y顺转β度。

各种变换示意如下图所示 :来源于pdf规范文档

PDF坐标系统_坐标变换_02

   注意两点:

  1. 坐标转换作用于坐标空间而非对象本身。对象的绘制是在转换空间计算完成之后进行。

  2. 由于矩阵计算的不可逆性,坐标转换不能随意交换,交换会导致不同的显示效果。参考示意图如下。一般说来若要正确显示对象,坐标变换顺序应该是:平移、旋转、缩放或斜变形.

PDF坐标系统_坐标空间_03