您知道 EPS 文件应该如何使用吗?EPS 文件的重点在于它旨在被应用程序用作“黑匣子”。
当应用程序创建 PostScript 程序时,它可以将 EPS 包含在最终输出中,除了大小之外,对其一无所知。因此,当 PostScript 生成时,应用程序知道 EPS 的大小,并修改 CTM 以便根据需要缩放内容,并将其定位在页面上。
如果您想使用多个 EPS 文件,那么您必须这样做,您必须修改每个 EPS 文件之间的 CTM,以便将其放置在您需要的页面大小和位置。如果您不这样做,那么它们都将在页面上的当前位置和比例结束。正如你所说,它们最终相互叠加。
现在 EPS 文件的全部意义在于它可以以编程方式放置,但您必须编写程序才能做到这一点:-)
首先,您需要从 EPS 文件中解析边界框。如果 EPS 正确符合,这将是 %%BoundingBox 和可选的 %%HiResBondingBox 注释。
有了这些信息,您就需要决定您使用的媒体大小和/或如何缩放 EPS 文件以适应所需的媒体。
然后,您启动一个新的 PostScirpt 程序,该程序首先请求特定的媒体大小,然后使用scale
andtranslate
运算符移动到媒体上的正确位置,然后执行第一个 EPS 文件(通过包含内容或使用run
操作员)。
对每个 EPS 文件重复该过程。
showpage
最后使用运算符编写新内容
假设您在 Ghostscript 中使用了 eps2write 设备,生成的文件将是一个新的 EPS 文件,它体现了各个 EPS 文件的内容,可以根据需要进行缩放和放置。
例如(所有值都只是虚构的示例数据):
%!
<< /PageSize [612 792] >> setpagedevice
gsave
306 396 moveto
0.5 0.5 scale
(example1.eps) run
grestore
gsave
306 0 moveto
1.5 1.5 scale
(example2.eps) run
grestore
gsave
0 396 moveto
(example3.eps) run
grestore
gsave
0 0 moveto
0.66 0.66 scale
(example4.eps) run
grestore
showpage