PDF座标系统

1. Pdf座标空间

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

  • 座标原点位置

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

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

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

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

  • 设备座标空间(device space)

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

  • 用户座标空间(User space)

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

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

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

clip_p_w_picpath002

图片来源于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规范文档

clip_p_w_picpath004

   注意两点:

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

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

p_w_picpath

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章