首页 > 代码库 > AI文件格式解析
AI文件格式解析
一、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 点击打开链接
AI文件格式解析