PDF文件中交叉引用流对象(cross-reference stream)的解析方法
1 介绍
在PDF-1.5版本[1]之前,对象的交叉引用信息是存储在交叉引用表(cross-reference table)中的。在PDF-1.5版本之后,引进了交叉引用流(cross-reference stream)对象,可以用它来存储对象的交叉引用信息,就像交叉引用表的功能一样。
采用交叉引用流对象存储对象的交叉引用信息至少有以下几点好处:
1) 存储的信息更紧凑,并且可以引入压缩算法进行压缩
2) 提供了访问存储于对象流(ObjectStreams)中的被压缩的对象的功能
3) 提供了将来的可扩展的交叉引用流的表项类型,以便存储更多不同信息
交叉引用流对象在PDF文件中的偏移位置,由关键字startxref 指出;而相应的交叉引用表则由关键字xref指出。交叉引用流对象的类型为XRef, 也即其对象类型具有如下形式:”/Type /XRef”
下述的片段就是一个交叉引用流对象例子: