我有2个eps文件
a.eps
b.eps
我需要阅读它们的内容,并创建一个同时包含a和b的新EPS文件。输出是通过使用它们添加a.eps和b.eps
1.positioning(x,y)
2.scaling
3.rotating
例如。如果
a.eps的内容为X
b.eps的内容为O
output.eps的内容为X
我正在尝试使用Graphics2D库,但要读取EPS文件并提取形状会变得很有挑战性。
答案 0 :(得分:0)
如果坚持使用PostScript,这很简单。 EPS文件是“封装的”,也就是说它们是完全独立的。 EPS的目的是,您可以将EPS文件直接插入PostScript程序,而对其大小和形状一无所知。
您需要做的就是更改每个文件之间的CTM,以使它们显示在正确的位置(并为合并后的文件添加EPS文件的样板)。 PostScript(EPS是PostScript的子集)对此具有丰富的运算符集。
例如,要合并EPS1和EPS2,并从合并中创建新的EPS,您可以这样做:
return
这将在介质的左下方绘制EPS1,按比例缩小50%,然后在底部(从左侧绘制306点(4.25英寸))绘制EPS2,再次按比例缩小50%。
您必须正确获取最终EPS的BoundingBox注释,这对于导入EPS的任何应用程序都至关重要。
如果您真的想要一个EPS文件,或者不想自己做所有计算和样板工作,则可以使用Ghostscript的eps2write设备提供帮助。您仍然需要编写PostScript代码来定位EPS文件,但是该程序可以更简单。采取与上述相同的示例:
%!PS-Adobe-2.0 EPSF-1.2
%%Creator:me, myself-
%%Title:combined EPS
%%CreationDate:23/5/19 9:32 AM
%%DocumentFonts:Helvetica-Bold
%%BoundingBox:0 0 612 792
%%EndComments
save
0 0 moveto
0.5 scale
...
... insert contents of EPS1 here
...
restore
save
306 0 moveto
0.5 scale
...
... insert contents of EPS1 here
...
restore
%%EOF
将其保存为方便的文件,例如input.ps,然后执行:
%!
save
0 0 moveto
0.5 scale
(/disk/path/EPS1.eps) run
restore
save
306 0 moveto
0.5 scale
(/disk/path/EPS2.eps) run
restore
showpage
结果应该是一个新的单个EPS文件,其中包含两个原始EPS文件的内容,并为您处理了所有BoundingBox和其他样板。