我使用以下 PostScript 代码将文本 Sample 放在每个 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 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
会像 show
一样构建一条路径,即使 pathbbox
立即销毁它;所以你需要某种 moveto
)。
关于text - 如何在 PostScript 中使页面上的旋转文本居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717457/