如何以编程方式操作EPS文件

时间:2009-01-09 12:39:19

标签: eps

我正在寻找有助于以编程方式操作EPS(Encapsulated PostScript)文件的库。基本上,我想要做的是:

  • 显示/隐藏EPS文件中的预先存在的图层(打开和关闭它们)
  • 在EPS文件中填写(颜色)命名形状
  • 检索EPS文件中命名点的坐标
  • 在EPS文件中的新图层上绘制形状
  • 在服务器上,没有用户交互(脚本Adobe Illustrator不起作用)

我知道EPS文件格式是如何基于PostScript语言的,因此必须进行解释 - 从头开始​​创建简单的图形非常简单。但是为了实际修改现有文件,我猜你需要一个解释文件的库,并为操作提供某种“DOM”。

我甚至可以在EPS文件中命名形状和点吗?

编辑:假设我已将图层保存在单独的EPS文件中。或者更好的是:只是图层的“数据”部分。我可以连接这些东西来创建一个新的EPS文件吗?并附加绘图命令?填写现有的命名对象?

4 个答案:

答案 0 :(得分:7)

这非常困难,原因如下:PS文件是一个程序,其执行结果是像素放在页面上。 PS程序中的指令处于“使用当前笔和颜色绘制线条”或“将坐标系旋转90度”的级别,但没有像在矢量绘图中看到的层或复杂对象的概念应用

PS文件结构中很少有约定允许外部程序修改它们:页面单独标记,字体资源和媒体尺寸在特殊注释中拼写出来。对于必须遵循这些指南的嵌入式Postscript(EPS)尤其如此,因为它们应由应用程序读取,但不能用于通用PS,因为它被发送到打印机。 PS程序的抽象级别远低于您所需的抽象级别,现在可以根据任意PS代码重构它。原则上,PS文件每次打印时都会产生不同的输出,因为它可能会根据随机决策查询其执行环境和分支。

Adob​​e Illustrator等应用程序会发出遵循严格结构的PS代码。有可能在不解释代码的情况下解析和操作这些内容。我仍然建议重新考虑当前的架构:你所需要的抽象级别太低了。

答案 1 :(得分:3)

PDF不可操作,因为无法更改pdf的任何现有部分(通常)只添加内容。 EPS与PostScript相同,只是它有一个边界标题。

做你想做的事情的问题是PS是一种编程语言,其输出(主要)是某种形象。所以问题可以说是“如何在Java文件中的新图层上绘制形状”。您可能需要动态生成完整的PS,或者完全使用其他图像格式。

答案 2 :(得分:1)

我不知道有任何可用的库,但您可以根据Ghostscript / GSview中的epstool构建满足您需求的内容

答案 3 :(得分:1)

我认为您最好的选择是从EPS生成PDF然后操纵PDF。然后回到EPS。 PDF比EPS更“可操纵”。