PDF文件格式概要解释

作者: nick 分类: 学习 发布时间: 2012-05-31 10:17 ė 6没有评论
PDF是一种文件格式,它不依赖于产生或显示它的程序、硬件、及操作系统。一个PDF文件由一系列的对象构成,这些对象一起定义各页的外观,还可能包含一些相互作用的对象及更高级的应用数据。每页可以含有任何文本、图象的组合。每页的外观由PDF内容序列定义,内容序列包含一系列的显示在本页上的图象对象。当应用程序产生一个内容序列时,所有 外观、布局及格式已经确定。除描述每页的静态外观,PDF文档还可以包含与读者交互的元素,类似于电子表格。还支持文本注释、超链接、标记、文件附件、声 音及电影。文件中的对象还可定义一些动作,这些动作由键盘输入及点击触发。可以包含有可以填写的表格,并将表格中的数据输出到外部程序,或由外部程序输入 到这些表格。

最后,文档可以包含高级程序,以致于使内容之间互相影响而改变。还可以包含一些标识及逻辑结构以便于搜索、编辑、或提取。

前面已经提过,文件是二进制储存。如果其具有符合特定规则时,就是字符文件。PDF的语法部分可以当字符文件读,但有很大一部分是二进制读取转化成其它编 码内容。PDF文件由四部分组成Header、Body、Cross-referencetable、Trailer。Heade说明PDF的版本 如%PDF?1. 6表示1.6的版本;Body是PDf对象的存储空间;Cross-referencetable是一个PDF对象的索引表;Trailer可以快速定位 某些特殊作用的对象。文件最后一行以%%EOF结束,倒数第二行表示索引表的位置偏移,最后第三行是startxref。

PDF数据类型可以分为八种:字典,数组,间接,布尔,数字,字符串,流,空对象。数组以[]配对;字典以<<>>配对;流以stream和endstream配对;间接以12 0 R形式出现,数子表示索引号,指向一个对象,0是通用设置,R表示这是间接数据类型。

索引表的组织结构是第一行以xref开始,第二行第一个表示索引起始值,第二数字表示连续索引的个数n。从第三行开始有n行个索引地址,第一个数字表示偏 移地址,第三位表示是否可用f不可n可用。startxref前面是一个trailer字典,如果里面有Prev元素表示还有一个索引表;Root表示 PDF对象树的根。

PDF对象一般常用的有Pages、Page、Resource、Image、Font、Color等。Pages包含若干个Page,如果递归下去就是 相对应的连续页面。Page包含资源(字体、颜色、图像等)和进行页面渲染的PostScript代码。对一些数据进行压缩存储需要算法的支持,常用的有 这几种:ASCII85Decode、LZWDecode、ASCIIHexDecode、FlateDecode、RunLengthDecode、 CCITTFaxDecode、JBIG2Decode、DCTDecode、JPXDecode等,它们可以多重使用。图片都会去掉文件头转换为参数保 存,图片数据保存为流。

%PDF?1. 4
1 0 obj
<< /Type /Catalog
/Outlines 2 0 R
/Pages 3 0 R
>>
endobj
2 0 obj
<< /Type Outlines
/Count 0
>>
endobj
3 0 obj
<< /Type /Pages
/Kids [ 4 0 R ]
/Count 1

4 0 obj
<< /Type /Page
/Parent 3 0 R
/MediaBox [ 0 0 612 792 ]
/Contents 5 0 R
/Resources << /ProcSet 6 0 R >>
>>
endobj
5 0 obj
<< /Length 35 >>
stream
… Page-marking operators …
endstream
endobj

6 0 obj
[ /PDF ]
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000074 00000 n
0000000120 00000 n
0000000179 00000 n
0000000300 00000 n
0000000384 00000 n
trailer
<< /Size 7
/Root 1 0 R
>>
startxref

408
%%EOF

还有下列更为详细一些的文章:

1. 一个简单的PDF文件结构的分析

2. PDF File structure

本页链接: http://www.scriptlover.com/static/1710-pdf-format

本文出自 传播、沟通、分享,转载时请注明出处及相应链接。

本文永久链接: http://www.db.run/?p=1940

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部