2

次のPostScriptコードを使用して、すべてのPDFページにテキストサンプルを配置します。

<<
   /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°回転したテキストをページの中央に揃えるにはどうすればよいですか?

4

1 に答える 1

3

false charpath flattenpath pathbboxテキストのバウンディングボックスを取得するために使用できます。現在のポイントが0 0これを行うときの場合、左下の座標はにかなり近い 0 0ので、右上の座標はテキストの幅と高さを表します。したがって、(-width / 2、-height / 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

精度を上げるには、次のように置き換え4 2 roll pop popます

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

そして、ポイントはどこにあってもかまいません(ただし、パスをすぐに破棄する場合でもcharpath、パスを作成するのと同じように、現在のポイントが必要です。したがって、何らかの種類が必要です)。showpathbboxmoveto

于 2012-10-04T05:18:19.177 に答える