前言
前面看了PDF隐写,研究了一下是怎么回事,自己想实现一下,然后在网上也没看到有相应脚本,就花时间写了一下,也趁此做下记录。
PDF文档结构
PDF文件结构由四部分元素构成:文件头 文件体 交叉引用表 文件尾
-
文件头。指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。
-
文件体。PDF文件的主要部分﹐由一系列间接对象组成。这些间接对象描述了文档的各个组成部分﹐如字体、页面、实例图形等。各个间接对象间的层次关系构成了PDF的文档结构(即逻辑结构),其是一个树形结构,由目录(Catalog)、页树( page tree)、大纲树( outline tree)、线索树(Article thread)和名字树(Named Destination)组成。
-
交叉引用表。为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表,包含了间接对象的偏移地址、产生号和是否在使用等信息。其对应着一个或者多个交叉引用节。
-
文件尾。说明了根对象(Catalog)的对象号和交叉引用表的偏移地址,另外还保存了PDF文件的加密等安全信息。
随便拿一个pdf文档,丢到010里面运行pdf模板就可以得到上述那样一个结果
而解析是应用程序从PDF文件的尾段开始访问的,其过程为:首先从文件尾所声明的交叉引用表的地址,找到