Goo*_*bot 5 pdf postscript ghostscript eps
我想裁剪一个PS或PDF文件的主要区域来创建一个EPS没有空格的文件.的命令ghostrcipt,ps2pdf,epstools可以裁剪主绘图出来的文档文件.
问题是它们只能以原始形式裁剪,但我想创建一个EPS文件BoundingBox 0 0 x y; 裁剪并移动到左下角.
我们想要在PS文档中插入生成的EPS文件时的差异.具有时BoundingBox x0 y0 x y,PS文档在点x0 y0处插入EPS文件,而不是我们所在的位置.
例:
考虑一个简单的PS文件
%!
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
Run Code Online (Sandbox Code Playgroud)
如果EPS使用像这样的命令将其转换为
ps2eps test.ps test.eps
Run Code Online (Sandbox Code Playgroud)
它会产生
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 72 700 127 708
%%HiResBoundingBox: 72.000000 700.000000 127.000000 707.500000
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
%%Trailer
cleartomark
countdictstack
exch sub { end } repeat
restore
%%EOF
Run Code Online (Sandbox Code Playgroud)
它已经在其原始坐标中被裁剪,结果BoundingBox是72 700 127 708.现在,如果尝试EPS在PS文档中插入此文件,它会尝试嵌套在此坐标处.
如果用它创建一个EPS文件将很有用BoundingBox: 0 0 55 8.当然,所有绘图坐标(此处为moveto)必须使用此新引用进行修改.
注意:如上所述,我修复BoundingBox参考点的目的是使其可以在PS文档中导入.因此,这个问题的另一个答案是:如何在PS文档中插入EPS文件而不管其BoundingBox.
例如,如何在200 200 255 208PS文档的位置插入此EPS文件.我尝试使用以下代码插入EPS,但除非从0 0以下位置启动BoundingBox,否则它将无法工作:
200 200 translate
save
/showpage {} bind def
(test.eps)run
restore
Run Code Online (Sandbox Code Playgroud)
简单地取消翻译怎么样?
-72 -700 translate
Run Code Online (Sandbox Code Playgroud)
是在eps 本身中,还是在包含之前的准备部分中?
尴尬的!
以下打字稿说明了一个 awk 脚本,该脚本在 DSC 注释的指导下对 eps 执行所需的修改(就像妈妈以前所做的那样!)。
优点是:如果您可以保证输入 EPS 充分符合 DSC 以提供这些标记,则此方法将比通过Ghostscript 传递文件快几个数量级。
简单性既是该程序的优点,也是其局限性。它扫描 DSC 注释,从 BoundingBox 注释中提取值,抑制 HiResBoundingBox,并在页面注释后添加 postscript 'translate' 和 'rectclip' 命令。只要每股收益确实是真实的,这应该会产生正确的结果。但是另一个答案中的 Ghostscript 方法将在不太可靠的 DSC 一致性的输入文件上产生结果(因为它没有采取快捷方式,它将 DSC 视为注释并完全忽略它们)。
严格来说,“rectclip”不是必需的,但问题要求输出被“裁剪”。
592(1)11:27 AM:~ 0> cat epscrop.awk
/%%BoundingBox: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)/{x=$2;y=$3;w=$4-x;h=$5-y;print $1,0,0,w,h}
!/%%BoundingBox:/&&!/%%HiRes/{print}
/%%Page /{print -x,-y,"translate"; print 0,0,w,h,"rectclip"}
593(1)11:27 AM:~ 0> awk -f epscrop.awk etest.eps
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 55 8
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
-72 -700 translate
0 0 55 8 rectclip
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
%%Trailer
cleartomark
countdictstack
exch sub { end } repeat
restore
%%EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20506 次 |
| 最近记录: |