2012-09-03 67 views
4

要将外部EPS文件插入到PostScript文档中,需要使用文本编辑器打开EPS文件,并在PostScript文件中复制/粘贴基于文本的数据。将EPS图像插入PostScript文档

我想知道是否有一个标准的方法来将外部EPS文件包含在PostScript文档中?我的意思是链接到EPS文件,因为PS在运行PostScript文档时可以捕获并读取其内容。我已阅读了关于run命令的一些内容,但不知道如何使用它来在主PostScript文档中包含外部EPS文件。

UPDATE:当插入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.

回答

3

假设您的EPS文件与主PostScript文件位于同一目录中,并且名为my.eps。然后,你可以把此行到您的PostScript文件的代码:

(my.eps) run 

你必须在它的确切位置,这条线应该去引起想要的效果,以锻炼身体。大概在showpage运营商将是一个开始的好地方。

+0

谢谢,这是一个很大的帮助。实际上,我之前尝试过,但我的问题是它在Linux文档查看器中不起作用。您的回答让我有信心探索这个问题,并且它在GhostScript中运行良好。 – Googlebot

+0

我在使用Ubuntu及其默认的PDF查看器:Document Viewer 3.4.0。 – Googlebot

+0

@Ali:AFAIR,后面的通用名称“文档查看器(如窗口标题所示)隐藏'evince'可执行程序。我不知道什么外部库evince使用渲染PostScript屏幕,但它似乎不是Ghostscript,它似乎没有为'run'操作符执行... –

5

既然你扩大你原来的问题,我更添加另一个答案...

首先,不要在第一行中使用%!PS-Adobe-3.0(它您的文件符合一定的标准,它不做)。仅使用%!PS(或者甚至仅使用%!)。

,你必须确保你的1.eps文件确实是一个有效 EPS。既然你不包括你的1.eps,我不能检查这个。

,没有它不是translate语句将导致创建新页面 - 这翻译本身是语法OK(取决于你想要达到这效果)。

第四个,你的EPS不应该使用showpage操作符,否则在我的其他答案给出的简单的行将不会自行工作。在情况下,EPS本身弹出,你需要一个showpage运行EPS之前重新定义showpage操作人员无操作,并且运行后恢复原始showpage语义:

save 
/showpage {} bind def 
(my.eps) run 
restore 

第五 ,第二个文字不一定出现以下的的EPS。根据EPS的实际尺寸,它可能显示在EPS的空间上。

第六个,第一个文本可能被EPS的笔触和填充(取决于EPS的实际图纸尺寸)覆盖,因此可能看起来根本不存在。

第七,真正的PostScript大师(我不是一个),会发现一个第零第八第九第十甚至moreth项指出关于这个话题... ;-)

+0

如何将2个答案标记为接受?我使用了'ImageMagick'生成的几个eps文件,我也试过从互联网上下载的ome eps文件,问题是连接到'showpage';尽管我无法在eps文件中找到这个确切的命令。有一个缺点:如果没有绑定到'showpage',这个命令将不再起作用;我们不能有一个以上的页面。 – Googlebot

+0

关于你的观点7的一个推荐:我认为你的确如此。我是PostScript新手,非常喜欢它;然而,少数人对此感兴趣,并且很少有Q/A(与其他语言相比)。因此,我浏览了几乎所有的问题以了解更多。许多问题都由你回答。我阅读Adobe提供的书籍,但我确实相信学习一门语言是具有挑战性的练习的问题。 – Googlebot

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 

然后考虑这个例子PostScript文件,命名为so#12253041.ps

%! 

/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 

最后

  1. ...试着了解每行发生了什么PS;
  2. ...考虑到每个页面的代码差异(也是运营商的顺序);
  3. ...也看看两个EPS文件之间的差异。
相关问题