需要合并 2 个 eps 文件以在 Java 中生成 output.eps

Need to merge 2 eps files to produce output.eps in Java

我有 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 O

我正在尝试 Graphics2D 库,但读取 EPS 文件和提取形状变得越来越困难。

如果您坚持使用 PostScript,这很简单。 EPS 文件是 'encapsulated',也就是说它们完全是 self-contained。 EPS 的目的是您可以直接将 EPS 文件插入到 PostScript 程序中,除了它的大小和形状之外什么都不知道。

您需要做的就是更改每个文件之间的 CTM,以便它们出现在正确的位置(并在组合文件周围添加 EPS 文件的样板)。 PostScript(EPS 是 PostScript 的一个子集)为此提供了丰富的运算符集。

例如,要组合 EPS1 和 EPS2,并从组合中生成新的 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

在媒体左下方绘制 EPS1,缩小 50%,然后在底部绘制 EPS2,距离左侧 306 点(4.25 英寸),再次缩小 50%。

必须正确获取最终 EPS 的 BoundingBox 注释,这对于导入 EPS 的任何应用程序都至关重要。

如果您真的想要一个 EPS 文件,或者不想自己做所有的计算和样板,那么您可以使用 Ghostscript 的 eps2write 设备来提供帮助。您仍然需要编写 PostScript 代码来定位 EPS 文件,但程序可以更简单。还是上面的例子:

%!
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

将其保存为方便的文件,说 input.ps 然后执行:

gs -sDEVICE=eps2write -sOutputFile=combined.eps input.ps

结果应该是一个新的单个 EPS 文件,其中包含两个原始 EPS 文件的内容,所有 BoundingBox 和其他样板都已为您处理。