一、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文件解析过程


aidl自动生成文件解析 android ai文件格式解析_图层

 

注: 

1.  上面蓝色部分显示了对象目录的检索过程。其中AI的文件内容保存在AIPrivateData所对应的Obj中。 

2.  红色部分在AI图形解析过程中并不需要。 

3.  Private对象中保存了所有AIPrivateData对象的索引信息,可以按照AIPrivateData的序号进行查找,从而找到图层数据区,并解析路径信息。


PS:上面只是对于AI文件格式以及解析过程的大概说明,如果对于上面的AI文件解析过程不太理解,可以找个AI文件以文本方式打开(写字板),对照着上面的流程对具体的细节部分进行理解。