2012-09-03 78 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文件之間的差異。