iwork 文件格式分析

根据维基百科,到2015年苹果推出的iwork版本

iwork2008介绍

1、文档结构:
是一个资源合集:压缩格式的(内含文件夹和文件)
在windows下修改iwork的文件后缀为.rar,解压缩后可以看到:

buildHistoryVersion.plist:属性列表

Contents文件夹包含:
PkgInfo
index.xml.gz:使用GZIP压缩的xml文件,包含了文件的内容主体
QuickLook文件夹包含:
Preview.pdf
Thumbnail.jpg
这两个文件是为了预览准备的
thumbs文件夹:
包含使用tiff格式的缩略图
PageCapThumbV2-1.tiff
PageCapThumbV2-2.tiff 
 
2、文档内容存储位置:
内容以xml的格式存放在index.xml.gz中

iwork2009介绍

1、文档结构:
格式与iwork2008类似,只是xml文件变为非压缩形式
 
Pages文档处理程序包含:
QuickLook文件夹
buildVersionHistory.plist
index.xml
 
numbers表格处理程序包含:
QuickLook文件夹
buildVersionHistory.plist
index.xml
 
key幻灯片程序包含:
QuickLook文件夹
thumbs文件夹
buildVersionHistory.plist
index.apxl
 
2、文档内容存储位置:
内容以xml的格式存放在index.xml/apxl中
 

iwork2013介绍

重点介绍这个版本。
1、文档结构:
与早期版本不同,iwork2013 本身就是一个文件夹,使用每个应用程序名称为后缀。
Pages 为 .pages
keynodte 为 .key
numbers 为 .numbers
 
Data文件夹:包含图片对象
Metadata文件夹:
BuildVersionHistory.plist:XML的属性列表,提供历史信息
DocumentIdentifier:一个文本文件,包含一个文档的唯一标识符
Properties.plist:一个二进制的属性列表记录了另外一些文档属性
 
Index.zip:zip压缩文件
Index文件夹
Tables文件夹:一些IWA文件
不同的 IWA 文件,包含文件内容
 
IWA 格式文件其实是使用的 Protobuf 结构组织数据流,并使用了 Snappy 进行压缩
IWA: .iwa(iwork Archive)文件
Snappy:是 Google 的压缩程序
Protobuf:是 Google 的数据序列化的二进制文件,用于创建数据结构。是一种轻便高效的结构化数据存储格式,
可以用于类似 Json 和 xml 的存储结构。非常适合作为在网络通讯中的数据载体。
preview.jpg:文件内容预览
 
 

相关连接:

一个iwork的开源项目:https://github.com/obriensp/proto-dump
介绍iwork文件格式的:https://github.com/obriensp/iWorkFileFormat
protobuf的源码连接:https://github.com/google/protobuf
原文地址:https://www.cnblogs.com/etangyushan/p/5305729.html