将 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 大师(我不是),可能会发现 ZerothEighthNineth em>、第十个甚至更多关于这个话题要指出的项目...... ;-)

【讨论】:

如何将 2 个答案标记为已接受? :) 我使用了ImageMagick 生成的几个 eps 文件。我还尝试了从互联网上下载的 ome eps 文件。问题与showpage有关;虽然我无法在 eps 文件中找到这个确切的命令。无论如何,你的方法有一个缺点:如果没有绑定到showpage,这个命令将不再起作用;我们不能超过一页。 对您的第 7 点表示赞赏:我认为您确实如此。我是 PostScript 新手,非常喜欢它;但是,有一些人对此感兴趣并且关于它的 Q/A 很少(与其他语言相比)。因此,我浏览了 SO 中的几乎所有问题以了解更多信息。你回答了很多问题。我阅读了 Adob​​e 的可用书籍,但我确实相信学习一门语言是一项具有挑战性的实践。【参考方案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 文档的主要内容,如果未能解决你的问题,请参考以下文章

使用 R 将图形导出到 .eps 文件

无损压缩从 PostScript 生成的 PDF

LaTeX如何插入大量图片?

LaTeX的图片插入及排版[转]

latex 如何将bmp转换成eps

将大型光栅图形图像(位图、PNG、JPEG 等)转换为非矢量 postscript