搜索
写经验 领红包

pdf文件结构详解(pdf文件结构技术规范)

首先我们开看一个pdf文件,用winhex打开一个pdf文件。

mupdf库中的python2.pdf文件

PDF版本

在pdf文件格式中,pdf版本只会在第一行并且以%PDF-x.x表示。

pdf文件版本

当前大致有以下版本:

pdf-1.0pdf-1.1pdf-1.2pdf-1.df-1.4pdf-1.5pdf-1.6pdf-1.7pdf-1.8(标准文档中无此版本,但一些特殊文件中存在)pdf-2.0

常见的还有一些比较特殊的版本:pdf/A、pdf/X、pdf/E、pdf/vt等。

body

下图中框选字段为body字段,内部是一个个对象。对象都是以 x空格x空格obj开头endobj结尾标识。第一个x代表在对象序号,第二x代表是否使用

对象中<<>>内容为对象属性,每个属性用/分割。如果对象有流会在>>后用stream标识,endstream结尾。如下图:

交叉引用表

交叉引用表主要用于标识每个对象id、相对于文件头的偏移位置和对象是否被使用。以xref开头,trailer结尾。如下图

zlib2.12的pdf文档

trailer字段

标识pdf文档整个信息,如页、文档树等。

文件尾

文件尾标识交叉引用表的位置。以startxref开头,后接交叉引用表相对于文件头偏移位置,%%EOF结尾。

注意:如上章所述,如果多次修改,会存在有很多交叉引用表、trailer、文件尾。交叉引用表、trailer、文件尾每次出现都是一起出现,并且相对位置不变。后续会出单章描述此种情况如何解析。

免责声明:本文内容由互联网优秀作者用户自发贡献,本站仅提供存储空间服务,不拥有所有权,不承担相关法律责任。若有涉嫌抄袭侵权/违法违规的内容,请与我们取得联系举报,一经查实立刻删除内容。本文内容由快快网络小洁创作整理编辑!