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檔案,如果沒有的話,有兩種免費 方法可以產生:
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.雜項限制
     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
    1. 開啟目的ps檔
    2. 開啟來源愈插入的EPS檔
    3. 在ps檔尾加入BeginEPSF,EndEPSF兩個函式再插入你要變換的功能
    4. 加入%%BeginDocument: 檔案名稱
    5. 插入EPS檔
    6. 加入%%EndDocument,結束