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

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