一、AI文件結構說明
AI文件整體結構類似於PDF結構,主要由開頭描述部分、間接對象、交叉索引表、文件尾部組成,主要結構如下圖1所示,其中交叉索引表保存了所有obj在文件中的偏移地址,所有數據信息都保存在obj中,每個obj對象都類似於下面結構:
1 0 obj 數據 endobj ,交叉索引表以單行字符串Startxref開始。
Comments |
Objm |
Objn |
…… |
xref |
Trailer(rootIndex) |
startxref |
%%EOF |
圖 1
注:
1. Startxref包含間接對象交叉索引表文件偏移地址
2. Xref按行列出了所有間接對象的文件偏移地址
3. Trailer(rootIndex),給出文件信息,包括root根目錄對象索引,Infor目錄對象索引,間接對象總個數
4. Comments文檔開始 %PDF-1.5
5. 中間Obj部分為間接對象,對象順序是交叉的
二、 AI文件內容格式說明:
ID line |
||
Comments |
||
Prolog |
||
Scripts Setup |
||
Objects |
||
Layer1 |
Layer2 |
……. |
Page Trailer |
||
%%EOF |
注:以上數據按照先后順序分塊存儲在文件AIPrivateData對應的Obj中,其中Obj數據長度最大為65536字節,數據可以分為:壓縮(文本文件)、非壓縮。
同時AI的圖層信息、路徑數據、圖像數據都存在上面的Objects部分,那么要解析AI文件,就必須首先找到圖層數據的開始,即找到%%EndSetup這一行(未壓縮的文件來說,壓縮的文件首先得解壓縮),之后可以按行讀取、解析具體路徑數據,直到數據區結束、PageTrailer的開始,具體查找過程如下:
三、 AI文件解析過程
注:
1. 上面藍色部分顯示了對象目錄的檢索過程。其中AI的文件內容保存在AIPrivateData所對應的Obj中。
2. 紅色部分在AI圖形解析過程中並不需要。
3. Private對象中保存了所有AIPrivateData對象的索引信息,可以按照AIPrivateData的序號進行查找,從而找到圖層數據區,並解析路徑信息。
具體的文件路徑描述符L、m、c、v、y說明可以參考點擊打開鏈接
PS:上面只是對於AI文件格式以及解析過程的大概說明,如果對於上面的AI文件解析過程不太理解,可以找個AI文件以文本方式打開(寫字板),對照着上面的流程對具體的細節部分進行理解。
參考文章:http://www.fileformat.info/format/ai/egff.htm 點擊打開鏈接
官方98版說明文檔:http://partners.adobe.com/public/developer/en/illustrator/sdk/AI7FileFormat.pdf 點擊打開鏈接