PDF格式分析(五)文档结构之文件头

一般情况下,文件头,即,PDF文件的第一行,它用来定义PDF的版本,从而确定该PDF遵循的哪个版本的PDF规范。
PDF版本是向下兼容的,即高版本的规范,兼容低版本的规范。
目前我见过的版本有:
%PDF-1.0
%PDF-1.1
%PDF-1.2
%PDF-1.3
%PDF-1.4
%PDF-1.5
%PDF-1.6
%PDF-1.7(最常见)
%PDF-1.8(在标准文档里没有,只是遇到一些客户特殊的文件中会出现,非常少见)
以上都是常见的版本号,还有一个特殊的版本,如PDF/X、PDF/E 和 PDF/A,PDF/VT等,它们在PDF文件中表现为文件头版本+OutputIntent相结合来标识版本。
在Catalog字典中,存在Version属性,它的值也是PDF版本号,该版本号如果高与文件头版本号,则采用这里的版本号,否则忽略。这里的Version属性是可选的,通常是在PDF增量写的情况下用到。因为原PDF文件进过编辑后,添加或修改的内容需要遵循的版本比原本更高,而增量写的方式要求原PDF文件内容不修改,所以,通过修改catalog对象中Version,只要增量部分写入catalog对象,就可以改变PDF的版本号。

PDF文件头有些情况下,并不只保存了版本号,还可能在版本号前面加一下用户自定义的内容,用来满足用户的特殊需求。当遇到这种情况时,对文件头的读取算法就要写的灵活一点,不然取值会发生错误,同时还会影响到间接对象读取的问题,这个问题,在后面介绍间接对象读取方法的时候,会介绍。

关于PDF版本,会单独起一章专门讨论。

你可能感兴趣的:(PDF分析)