2012-10-03 23 views
2

我使用下面的PostScript代碼將文本樣品每個PDF頁面上:如何中心旋轉的文本頁面上的PostScript

<< 
    /EndPage { 
    exch pop 2 lt { 
    gsave 
    /Arial-Bold 120 selectfont 
    .5 setgray 100 100 moveto 45 rotate (Sample) show 
    grestore 
    true} 
    {false} 
    ifelse 
    } bind 
>> setpagedevice 

這使文本在[100; 100]的位置。但我需要將此文本居中(會計文本旋轉)。

如何對齊這個45°旋轉文本在頁面的中心?

回答

3

您可以使用false charpath flattenpath pathbbox來獲取文本的邊界框。 如果當前點爲0 0,那麼左下角的座標將是非常接近0 0,所以右上角座標描述文本的寬度和高度。所以你只需要移動到(-width/2, - 高度/ 2)就可以移動到想要的中心點和備份。

由於旋轉中心也是中心點,因此您需要在旋轉之前進行平移。

%! 
/w 612 def 
/h 792 def 
/Helvetica-Bold 120 selectfont 

w .5 mul h .5 mul translate 
0 0 moveto 
(Sample) false charpath flattenpath pathbbox % llX llY urX urY 
4 2 roll pop pop % urX urY 

0 0 moveto 
45 rotate 
-.5 mul exch -.5 mul exch % -wid/2 -ht/2 
rmoveto 
(Sample) show 

爲了更準確,與

exch % llX llY urY urX 
4 1 roll % urX llX llY urY 
exch sub % urX llX urY-llY 
3 1 roll % urY-llY urX llX 
sub exch % urX-llX urY-llY 

更換4 2 roll pop pop然後點可以在任何地方(但確實需要一個當前點,因爲charpath構建的路徑就像show做,甚至儘管pathbbox立即銷燬它;所以你需要某種moveto)。

+1

要明確,「如果當前點是0 0」llx和lly不是零。你上面這樣做對urx和ury是準確的,但不是llx和lly。差別可能很小,所以它沒有什麼區別。 – ScottProuty

+0

@ScottProuty好的。謝謝。 –