本文主要是介绍PDF格式分析(二十七)Linearized PDF 线性化 - 文档结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
线性化PDF文档结构
线性化PDF文件文件中的所有间接对象应分为两组:
- 第一组应包含文档目录,其他文档级对象以及属于文档第一页的所有对象。 这些对象应按顺序编号,从第二组最后一个编号后的第一个对象编号开始。 (包含hint表的流,称为hint流,可以不按顺序编号)。
- 第二组应包含文档中的所有剩余对象,包括第一页之后的所有页面,所有共享对象(从多个页面引用的对象,不计算从第一页引用的对象),等等。 这些对象应从1开始按顺序编号。
这些对象组应由两个交叉引用表编制索引。 线性化PDF按顺序由11个部分组成, 所有对象的版本号均为0。
从PDF 1.5开始,PDF文件可以包含对象流(object streams )。 在包含对象流的线性化文件中,需要符合以下条件:
- 一些附加对象可能不包含在对象流中:如线性化字典,文档目录和页面对象。
- 存储在对象流中的对象编号,应在主要和第一页交叉引用部分中使用最高范围的对象编号。
- 对于包含对象流的文件,hint 数据可以仅指定对象流的位置和大小(或未压缩的对象),而不是单个压缩对象。 类似地,共享对象引用应该对包含压缩对象的对象流进行,而不是对压缩对象本身进行。
- 使用交叉引用流代替传统的交叉引用表。
Part 1: Header
线性化PDF文件应以标准的PDF文件头开头。 线性化与PDF版本号无关,可以应用于1.1或更高版本的任何PDF文件。第二行百分号(25h)后面的二进制字符是代码为128或更大的字符。
这篇关于PDF格式分析(二十七)Linearized PDF 线性化 - 文档结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!