Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 如何在PostScript中居中旋转页面上的文本_Text_Rotation_Center_Ghostscript_Postscript - Fatal编程技术网

Text 如何在PostScript中居中旋转页面上的文本

Text 如何在PostScript中居中旋转页面上的文本,text,rotation,center,ghostscript,postscript,Text,Rotation,Center,Ghostscript,Postscript,我使用以下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 >> setpag

我使用以下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°旋转的文本对齐在页面中心?

您可以使用
false charpath flattpath pathbox
获取文本的边界框。 如果执行此操作时currentpoint为
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
替换为

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

然后点可以在任何地方(但是确实需要有一个currentpoint,因为
charpath
show
一样构建一个路径,即使
pathbox
会立即销毁它;所以你需要某种
移动到
)。

只是为了清楚,“如果currentpoint是0”,llx和lly不是零。上面的方法对于urx和ury是准确的,但对于llx和lly则不准确。差别可能太小了,根本没什么区别。@ScottProuty好球。谢谢