分类: 日期:2022-01-12 作者:wangjianjilei 浏览:41
PDF文件主要由四部分组成
一般就是表示该pdf文件遵循的pdf文件版本,例如1.3, 1.7等
实际存储文件内容的部分, 按obj 对象进行存储, 每个obj对象有一个编号, 但是不一定是顺序存储的。
记录每个obj在整个文件中的位置, 通过偏移量进行定位。 一个文件可以有多个交叉表
相对于文件头来说,文件尾存储了最关键的文件meta信息,1. 交叉引用表在整个文件重的偏移位置 2. 文档的根对象的编号 3. 文档中具备的对象的个数
首先解析文件尾,得到交叉应用表和根对象编号。然后通过交叉引用表以及根对象编号,逐层解析文档, 构建文档数。注意根目录中一半都存在/PAGES对象, 这个代表了页面的根节点。
包括直接对象和间接对象两种,直接对象就是直接存储实际内容了,间接对象是通过一个指向另一个对象的指针.
主要说一下最重要的页面对象,其实页面对象存储的数据可以简化理解为一个dict, 包括实际文字内容,图像媒体信息,字体样式等各种资源(可以通过指定一个对象,间接表示)
%PDF-1.3
1 0 obj
<< /Type /Catalog
/Pages 2 0 R
>>
endobj
2 0 obj
<< /Type /Pages
/Kids [3 0 R]
/Count 1
>>
endobj
3 0 obj
<< /Type /Page
/Parent 2 0 R
/MediaBox [0 0 600 400]
/Resources << >>
>>
endobj
xref
0 4
00000000000 65535 f
00000000010 00000 n
00000000069 00000 n
00000000141 00000 n
trailer
<< /Root 1 0 R
/Size 4
>>
startxref
249
%%EOFΩ