AI文件整体结构类似于PDF结构,主要由开头描述部分、间接对象、交叉索引表、文件尾部组成,主要结构如下图1所示,其中交叉索引表保存了所有obj在文件中的偏移地址,所有数据信息都保存在obj中,每个obj对象都类似于下面结构:
1 0 obj 数据 endobj ,交叉索引表以单行字符串Startxref开始。
图 1
注:
1. Startxref包含间接对象交叉索引表文件偏移地址
2. Xref按行列出了所有间接对象的文件偏移地址
3. Trailer(rootIndex),给出文件信息,包括root根目录对象索引,Infor目录对象索引,间接对象总个数
4. Comments文档开始 %PDF-1.5
5. 中间Obj部分为间接对象,对象顺序是交叉的
注:以上数据按照先后顺序分块存储在文件AIPrivateData对应的Obj中,其中Obj数据长度最大为65536字节,数据可以分为:压缩(文本文件)、非压缩。
同时AI的图层信息、路径数据、图像数据都存在上面的Objects部分,那么要解析AI文件,就必须首先找到图层数据的开始,即找到%%EndSetup这一行(未压缩的文件来说,压缩的文件首先得解压缩),之后可以按行读取、解析具体路径数据,直到数据区结束、PageTrailer的开始,具体查找过程如下:
注:
1. 上面蓝色部分显示了对象目录的检索过程。其中AI的文件内容保存在AIPrivateData所对应的Obj中。
2. 红色部分在AI图形解析过程中并不需要。
3. Private对象中保存了所有AIPrivateData对象的索引信息,可以按照AIPrivateData的序号进行查找,从而找到图层数据区,并解析路径信息。
PS:上面只是对于AI文件格式以及解析过程的大概说明,如果对于上面的AI文件解析过程不太理解,可以找个AI文件以文本方式打开(写字板),对照着上面的流程对具体的细节部分进行理解。