EPS(Encapsulated Postscrit)
作者:cschen33.tw@yahoo.com.tw
2003/02/17
參照:ADOBE上
Encapsulated PostScript File Format Specification
#本文只作粗淺的介紹而已
1.介紹:
EPS就是Encapsulated PostScript的縮寫,它是類似於ps,但是可以包含在另一個ps檔案之中的的ps檔
也就是類似圖檔的功能
由上圖你可以很清楚的看出EPS用途,由於ps並不像html可以包含超鏈結的圖片(超多格式),因此發展出另一種特殊的檔案,專門用在被包含在ps檔,
可以是圖形可以是文字,而且它可以以單獨的檔案存在,一般我們是要在ps檔案中加入公司的標誌(logo)。
以下是含有ps檔案含有eps檔的樣式:
%!PS-Adobe-3.0
|
ps檔頭
|
..................
..................
..................
|
ps程式碼
|
EPS檔內容
|
|
..................
..................
|
ps程式碼
|
然而eps雖然衍生自ps但是用途不一樣,而有一些限制及延伸,因此無法如上述樣式運作
我們修正如下:
%!PS-Adobe-3.0
|
PS檔頭
|
...............
...............
...............
|
ps程式碼
|
定義eps使用前函式BeginEPSF
及使用後函式EndEPSF
|
在ps程式碼中寫兩個函式,用來處理進入EPS前置作業
及離開EPS之後置作業
|
BeginEPSF
|
|
EPS檔內容
|
|
EndEPSF
|
|
..............
..............
|
|
現在我們知道EPS的原理接下來我們將進入EPS的世界!
2.產生EPS檔
在windows下如何產生EPS檔,你如果有photoshop,photoimpact等軟體均可以讀寫eps及ps檔案,如果沒有的話,有兩種免費
方法可以產生:
- 印表機的驅動程式(ps印表機):
Apple laser
writer系列的印表機是接受ps檔案來列印的印表機,當然其驅動程式是可以將任何要印列的資料變成ps檔,最後傳送到印表機,但是我們希望最後是檔
案,所以我們要建立一個檔案印表機,步驟如下:我的電腦->新增印表機->連接埠(選file:)->驅動程式,制造廠商apple
驅動程式Apple color laserwriter 12/600 或16/600,或Apple laser writer II NTX
v51.8
因為內定是ps檔,我們需變為EPS格式(到印表機內容->postscript->postscript輸出格式->選取EPS)
因此任何檔案只要列印時印表機選上述印表機,會磞出一個對話框,填入路徑及檔名,副檔名.eps,如此這個檔案就是貨真價實的EPS檔
- GIMP(一個免費的影像處理軟體)
你可以至http://www.gimp.org/~tml/gimp/win32/下
載,其說明說可以讀寫ps,eps檔,但是我測試的結果只能寫,無法讀,因此只要儲存時另存新檔,在對話框填入路徑及檔名,最重的是副檔名eps就好了
3.windows下看ps及eps檔
Gsview這個軟體是免費的,但是啟動是會磞出一個
註冊畫面,按OK就好了,如果有photoshop,photoimpact則更簡單
4.手動建立EPS檔
1.需要的檔頭註解:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: llx lly urx ury
llx lly(lower left x,y)
urx ury(upper right x,y)
%%BoundingBox是定義EPS在PS中的區塊位置(在單獨檔案中這個設定好像沒有做用)
例如:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 5 5 105 105
10 setlinewidth
10 10 moveto
0 90 rlineto 90 0 rlineto 0 -90 rlineto
closepath
stoke
2.建議使用的註解
標題:%%Title:
建立者:%%Creator:
建立時間:%%CreationDate:
3.ps檔案中含EPS檔
開始:%%BeginDocument: 檔名
結束:%%EndDocument
%!PS-Adobe-3.0
|
PS檔頭
|
......................
......................
......................
|
ps程式碼
|
%%BeginDocument:
|
啟始
|
EPS檔
|
eps程式碼
|
%%EndDocument
|
結束
|
......................
|
ps程式碼
|
4.雜項限制
- EPS檔案中不可包含碼過255個ASCII 碼
- 不可以使用showpage:你可以重新定義{/showpage {} def},使用showpage不作動作
5.Adobe 建議的前置內容(暫不討論)
/BeginEPSF
{ %def
/b4_Inc_state save
def % Save state
for cleanup
/dict_count countdictstack
def % Count objects on dict stack
/op_count count 1 sub
def % Count objects on operand stack
userdict
begin
% Push userdict on dict stack
/showpage { }
def
% Redefine showpage, { } = null proc
0 setgray 0
setlinecap %
Prepare graphics state
1 setlinewidth 0 setlinejoin
10 setmiterlimit [ ] 0 setdash
newpath
/languagelevel
where
% If level not equal to 1 then
{pop
languagelevel
% set strokeadjust and
1
ne
% overprint to their defaults.
{false setstrokeadjust
false setoverprint
} if
} if
} bind def
6.Adobe 建議的後置內容(暫不討論)
/EndEPSF { %def
count op_count sub {pop} repeat % Clean up stacks
countdictstack dict_count sub {end} repeat
b4_Inc_state restore
} bind def
7.變型
operator同ps,有三種translate,scale,rotate,我們知道eps是要放在ps之中,我們可以透過這三種
操作來變更EPS的位置、大小、角度等,其放置的位置在%%BeginDocument之前(縮排只是為了方便閱讀)
BeginEPSF
left bottom
translate
angle
rotate
Xscale Yscale scale
%%BeginDocument:
EPSF檔內容
%%EndDocument
EndEPSF
8.另一種簡單的圖形格式EPSI(更深入,以後再研究)
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 80 24
%%Pages: 0
%%Creator: John Smith
%%CreationDate: November 9, 1990
%%EndComments
%%BeginPreview: 80 24 1 24
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FF0000000000000000FF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%FFFFFFFFFFFFFFFFFFFF
%%EndPreview
%%EndProlog
%%Page: "one" 1
4 4 moveto 72 0 rlineto 0 16 rlineto -72 0 rlineto
closepath
8 setlinewidth stroke
%%EOF
|
觀看%%BeginPreview:
%%EndPreview間的資料
F=1111(全部填滿)
0=0000(空白)
這是一種bit map的格式
其結果如下

至於%%BeginPreview: 的參數
寬 高 Depth 行數
Depth是顏色的位元有:
21=2 色
22=4 色
24=16 色
28=256色
寬=80,80/4=20個F
|
8.結論
我們可以寫一個程式來合併不同的ps及eps
- 開啟目的ps檔
- 開啟來源愈插入的EPS檔
- 在ps檔尾加入BeginEPSF,EndEPSF兩個函式再插入你要變換的功能
- 加入%%BeginDocument: 檔案名稱
- 插入EPS檔
- 加入%%EndDocument,結束