1. Pdf座標空間
座標空間決定了各個pdf對象如何顯示。對象的位置、大小、轉向等信息,這些信息的表示採取的是笛卡爾座標系,座標空間由如下三個因素決定:
座標原點位置
座標系X軸、y軸的方向
座標系每個軸的單位長度
每個座標空間之間的數據映射關係由轉換矩陣決定。簡單的解釋即:y(目標空間)=A(變換矩陣)x(源空間)+b(常向量)
PDF中座標系統分爲設備座標空間和用戶座標空間。
設備座標空間(device space)
決定了pdf對象最終的顯示效果
用戶座標空間(User space)
由於各設備的座標空間的不一致,PDF又定義了用戶座標空間,以保證各種對象的相對關係在設備上顯示時能夠保持一致,從而達到與設備無關的顯示效果。
PDF爲不同的對象定義了不同的座標空間,比如文字對應文字座標空間 【text space】,字形、表單對象、位圖、顏色模式等,各個不同的空間之間的關係如下圖所示.
具體某個對象的座標空間定義和對象的常見座標表示見後續博文。
圖片來源於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規範文檔
注意兩點:
座標轉換作用於座標空間而非對象本身。對象的繪製是在轉換空間計算完成之後進行。
由於矩陣計算的不可逆性,座標轉換不能隨意交換,交換會導致不同的顯示效果。參考示意圖如下。一般說來若要正確顯示對象,座標變換順序應該是:平移、旋轉、縮放或斜變形.