将 EPS 图像插入 PostScript 文档
Posted
技术标签:
【中文标题】将 EPS 图像插入 PostScript 文档【英文标题】:Insert EPS image into PostScript document 【发布时间】:2012-09-03 19:21:27 【问题描述】:要将外部 EPS 文件插入 PostScript 文档,需要使用文本编辑器打开 EPS 文件,然后将基于文本的数据复制/粘贴到 PostScript 文件中。
我想知道是否有一种标准方法可以将外部 EPS 文件包含在 PostScript 文档中?我的意思是链接到 EPS 文件,因为 PS 可以在运行 PostScript 文档时捕获并读取其内容。我已经阅读了一些关于 run
命令的内容,但不知道如何使用它在 PostScript 主文档中包含外部 EPS 文件。
更新:将 EPS 图像插入为
%!PS-Adobe-3.0
/Times-Roman findfont
14 scalefont setfont
72 700 moveto
(Thi is a text) show
72 300 translate
(1.eps)run
72 100 moveto
(Another text bellow image) show
showpage
它发送到下一页。在此示例中,第二个文本转到第 2 页,而不是显示在位置 )72 100。
【问题讨论】:
【参考方案1】:由于您扩展了原始问题,我最好添加另一个答案...
首先,不要在第一行使用%!PS-Adobe-3.0
(它说您的文件符合某个标准,但它没有这样做)。只使用%!PS
(甚至只使用%!
)。
第二,您必须确保您的1.eps
文件确实是一个有效 EPS。由于您没有包含您的1.eps
,因此我无法检查。
第三,不,不是translate
语句导致创建新页面——这个翻译本身在语法上是可以的(取决于哪个想要达到的效果)。
第四,您的 EPS 不应使用 showpage
运算符,否则我在其他答案中给出的简单行将无法单独工作。如果 EPS 本身弹出 showpage
,您需要在运行 EPS 之前将 showpage
运算符重新定义为无操作 ,并在运行后恢复原始 showpage
语义:
save
/showpage bind def
(my.eps) run
restore
第五,第二个文字不一定出现在EPS的下方。根据 EPS 的实际大小,它很可能会打印在 EPS 的空间中。
第六,第一个文本可能会被 EPS 的笔触和填充覆盖(取决于 EPS 的实际绘图大小),因此可能根本不存在。
Seventh,真正的 PostScript 大师(我不是),可能会发现 Zeroth、Eighth、Nineth em>、第十个甚至更多关于这个话题要指出的项目...... ;-)
【讨论】:
如何将 2 个答案标记为已接受? :) 我使用了ImageMagick
生成的几个 eps 文件。我还尝试了从互联网上下载的 ome eps 文件。问题与showpage
有关;虽然我无法在 eps 文件中找到这个确切的命令。无论如何,你的方法有一个缺点:如果没有绑定到showpage
,这个命令将不再起作用;我们不能超过一页。
对您的第 7 点表示赞赏:我认为您确实如此。我是 PostScript 新手,非常喜欢它;但是,有一些人对此感兴趣并且关于它的 Q/A 很少(与其他语言相比)。因此,我浏览了 SO 中的几乎所有问题以了解更多信息。你回答了很多问题。我阅读了 Adobe 的可用书籍,但我确实相信学习一门语言是一项具有挑战性的实践。【参考方案2】:
假设您的 EPS 文件与您的主 PostScript 文件位于同一目录中,名为 my.eps
。然后您可以将此行放入 PostScript 文件的代码中:
(my.eps) run
你必须弄清楚这条线应该在哪个确切位置产生想要的效果。可能就在 showpage
运算符之前是一个不错的起点。
【讨论】:
谢谢,帮了大忙。实际上,我之前尝试过,但我的问题是它在 Linux Document Viewer 中不起作用。您的回答让我有信心探索这个问题,而且它在 GhostScript 中运行良好。 我正在使用 Ubuntu 及其默认的 PDF 查看器:Document Viewer 3.4.0。 @Ali:AFAIR,在通用名称后面“文档查看器(如窗口标题所示)隐藏了evince
可执行程序。我不知道 evince 使用什么外部库来呈现 PostScript屏,但是好像不是Ghostscript,对于run
操作符好像也没有实现……
你应该是对的!文档查看器具有用于呈现 PostScript 的基本库。我的 Ubuntu 是 12.04。
请看看我更新的问题,我遇到了一个问题。也许,我错误地使用translate
来定位EPS 图像,或者它是外部图像的行为?我不确定是否会更进一步。【参考方案3】:
为了帮助您更深入地了解 EPS,请运行以下命令(根据您自己的情况调整路径):
sudo gs \
-o /opt/local/share/ghostscript/9.05/examples/tigr.eps \
-sDEVICE=epswrite \
/opt/local/share/ghostscript/9.05/examples/tiger.eps
然后考虑这个名为 so#12253041.ps
的示例 PostScript 文件:
%!
/Times-Roman findfont 14 scalefont setfont
% Page 1
72 680 moveto (This is a text on page 1) show
72 200 translate
save
.5 .5 scale
/showpage bind def
(/opt/local/share/ghostscript/9.05/examples/tigr.eps) run
2 2 scale
restore
72 100 moveto (Another text \(across image\)) show
showpage
% Page 2
72 680 moveto (This is a text on page 3...) show
.5 .5 scale
72 200 translate
save
/showpage bind def
(/opt/local/share/ghostscript/9.05/examples/tigr.eps) run
restore
2 2 scale
72 100 moveto
(Another text \(across image\)) show
showpage
% Page 3
72 680 moveto (This is more text on page 3. But it is not visible... Why?) show
.25 .25 scale
72 200 translate
save
/showpage bind def
(/opt/local/share/ghostscript/9.05/examples/tiger.eps) run
restore
4 4 scale
72 100 moveto
(Another text \(across image\)) show
showpage
% Page 4 (empty)
showpage
然后运行:
gs -o so#12253041.pdf -sDEVICE=pdfwrite so#12253041.ps
最后,
-
...尝试了解 PS 的每一行发生了什么;
...考虑到每个页面的代码差异(还有运算符的顺序);
...还要查看两个 EPS 文件之间的差异。
【讨论】:
以上是关于将 EPS 图像插入 PostScript 文档的主要内容,如果未能解决你的问题,请参考以下文章