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 点击打开链接

 

原文地址:https://www.cnblogs.com/ltfbk/p/3974195.html