PDF结构分析

 

一、   简单了解PDF

1   PDF格式

一个PDF文档从根本上来说是一个8字节序列。 其实PDF格式和我们已经熟知的HTML,XML等结构化的文件格式一样,包含有关键字,分隔符,数据等等。不同的是PDF文件是按照二进制流的方式保存的,而html文件则是可读的文本方式保存的。

2   PDF规范的发展

PDF规范的6次升级:

1.11995 加入了文档加密(40字节),线索树,名字树,链接,设备独立色彩资源。

1.21996 表单, 半色调屏幕,和其他的一些高级色彩特性, 对中文,日文和韩文的支持

1.32000 数字签名, 逻辑结构, JavaScript, 嵌入式文件,Masked Images, 平滑阴影, 支持 CID字体的附加色彩。

1.42001 文件加密 (128 字节), 标签式 PDF, 访问控制,透明,元数据流

1.52003 文档加密 (公钥), JPEG 2000 压缩,可选的内容组,附加的注解类型

1.62005 文档加密 (AES),增加最大文件支持,加入3D支持,额外的注解类型

3   PDF文件的基本组成

 

这四部分分别为:

文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。

l         文件体,PDF文件的主要部分,由一系列对象组成。

l         交叉引用表,为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表。

l         文件尾,声明了交叉引用表的地址,即指明了文件体的根对象(Catalog),从而能够找到PDF文件中各个对象体的位置,达到随机访问。另外还保存了PDF文件的加密等安全信息

4   PDF文档的逻辑结构PDF

 

文件尾(Trailer),说明根对象的对象号,并且说明交叉引用表的位置,通过对交叉引用表的查询可以找到目录对象(Catalog)。这个目录对象是该PDF文档的根对象,包含PDF文档的大纲(outline)和页面组对象(pages)引用。大纲对象是指PDF文件的书签树;页面组对象(pages)包含该文件的页面数,各个页面对象(page)的对象号。

页面(page)对象作为PDF中最重要的对象,包含如何显示该页面的信息,例如使用的字体,包含的内容(文字,图片等),页面的大小。里面的信息可以直接给出,当然里面的子项更多的是对其他对象的引用,真正的信息存放在其他对象里面。页面中包含的信息是包含在一个称为流(stream)的对象里,这个流的长度(字节数)必须直接给出或指向另外一个对象(包含一个整数值,表明这个流的长度)

 

二、   文件结构

1. PDF的基础语法

文件的第一行是文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。

一个对象的第一行一般有两个数字和关键字“obj”。例如:

3 0 obj

<< 

/Type /Pages

/Count 1

/Kids [4 0 R]

>> 

endobj

第一个数字称为对象号,来唯一标识一个对象的,第二个是产生号,是用来表明它在被创建后的第几次修改,所有新创建的PDF文件的对象号应该都是0,即第一次被创建以后没有被修改过。上面的例子就说明该对象的对象号是3,而且创建后没有被修改过。

对象的内容应该是包含在<<和>>之间的,最后以关键字endobj结束.

 

2. PDF的解析过程

 

 

3. PDF的简单案例

 

%PDF-1.0        

文件头,说明符合PDF1.0规范

  

1 0 obj

<< 

/Type /Catalog

/Pages 3 0 R

/Outlines 2 0 R

>> 

endobj

Catalog对象(根对象)

/Type /Catalog说明该对象的类型为/Catalog/Pages 3 0 R,这里/Pages指的是这个根对象包含的/Pages的目标是对象号为3的对象,3 0 R的意思是对对象3的引用。

 

2 0 obj

<< 

/Type /Outlines</

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值