PDF文件格式的解析

分类: 日期:2022-01-12 作者:wangjianjilei 浏览:41

PDF文件格式

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Ω

评论 (暂无评论)

发表评论

昵称:  
邮箱:  
网址: