PDF文件结构Word文档下载推荐.docx
- 文档编号:16477439
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:7
- 大小:94.45KB
PDF文件结构Word文档下载推荐.docx
《PDF文件结构Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《PDF文件结构Word文档下载推荐.docx(7页珍藏版)》请在冰豆网上搜索。
PDF规范从1993年到现在,已经有过7个版本,六次版本升级,从最初的pdf1.0.6版本到现在的PDF1.6,
每次的版本升级都会加入一些新的特性,PDF参考说明书也是从最初的100多页到现在的1000多页,但是PDF文件格式的主要特性还是没有改变,可以这么理解,PDF1.6是PDF1.0的扩展集,学习了PDF1.0以后也能基本上理解PDF1.6的内容。
因此说我下面的例子是基于一个PDF1.0的最简单的一个PDF文件的分析。
PDF规范的发展升级:
1.1
1995
加入了文档加密(40字节),线索树,名字树,链接,设备独立色彩资源。
1.2
1996
表单,
半色调屏幕,和其他的一些高级色彩特性,
对中文,日文和韩文的支持
1.3
2000
数字签名,
逻辑结构,
JavaScript,
嵌入式文件,Masked
Images,
平滑阴影,
支持
CID字体的附加色彩。
1.4
2001
文件加密
(128
字节),
标签式
PDF,
访问控制,透明,元数据流
1.5
2003
文档加密
(公钥),
JPEG
压缩,
可选的内容组,附加的注解类型
1.6
2005
(AES),增加最大文件支持,加入3D支持,额外的注解类型
3.PDF文件的基本组成:
一个PDF文件从大的方面来说分4个部分:
l
文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。
文件体,PDF文件的主要部分,由一系列对象组成。
交叉引用表,为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表。
文件尾,声明了交叉引用表的地址,即指明了文件体的根对象(Catalog),从而能够找到PDF文件中各个对象体的位置,达到随机访问。
另外还保存了PDF文件的加密等安全信息(以后详细讨论)。
如下图:
图1
4.PDF文档的逻辑结构
作为一种结构化的文件格式,一个PDF文档是由一些称为“对象”的模块组成的。
并且每个对象都有数字标号,这样的话可以这些对象就可以北其他的对象所引用。
这些对象不需要按照顺序出现在PDF文档里面,出现的顺序可以是任意的,比如一个PDF文件有3页,第3页可以出现在第一页以前,对象按照顺序出现唯一的好处就是能够增加文件的可读性,如果你不会用文本编辑器来阅读PDF结构,那么大可不必关心。
正是因为页与页之间的不相关性,就可以对PDF文件的页码进行随机的访问。
文件尾(Trail),说明根对象的对象号,并且说明交叉引用表的位置,通过对交叉引用表的查询可以目录对象(Catalog)。
这个目录对象是该PDF文档的根对象,包含PDF文档的大纲(outline)和页面组对象(pages)引用。
大纲对象是指PDF文件的书签树;
页面组对象(pages)包含该文件的页面数,各个页面对象(page)的对象号。
一个PDF文档有下图所示的层次关系:
图2
页面(page)对象作为PDF中最重要的对象,包含如何显示该页面的信息,例如使用的字体,包含的内容(文字,图片等),页面的大小。
当然里面的子项也可以是其他对象的引用。
页面中包含的信息是包含在一个称为流(stream)的对象里,这个流的长度(字节数)必须直接给出或指向另外一个对象。
图3
5.
PDF的基本语法:
文件的第一行是文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。
一个对象的第一行一般有两个数字和关键字“obj”。
例如:
3
0
obj
<
/Type
/Pages
/Count
1
/Kids
[4
R]
>
endobj
第一个数字称为对象号,来唯一标识一个对象的,第二个是产生号,是来表明它在被创建后的第几次修改,所有新创建的PDF文件的对象号应该都是0,即第一次被创建以后没有被修改过。
上面的例子就说明该对象的对象号是3,而且创建后没有被修改过。
对象的内容应该是包含在<
和>
之间的,最后以关键字endobj结束.
6.
文件Hello
World的文件分析:
6.1.文件的具体分析
%PDF-1.0
文件头,说明符合PDF1.0规范
/Catalog
R
/Outlines
2
Catalog对象(根对象)
outline对象(此处它的计数为0,说明没有书签)
pages对象(页面组对象),/Type
说明自身的属性,对象的类型为页码,/Count
1说明页码数量为1,/Kids
R]说明页的对象为4,
这里要说明的是如果有多个页面,就多个页面直接连续下去,比如说/Kids
10
R],
就说明该PDF的第一页的对象号是4,第二页的对象号是10。
4
/Page
/Parent
/Resources
/Font
/F1
7
/ProcSet
6
/MediaBox
[0
612
792]
/Contents
5
页对象,/Parent
R说明其父对象的对象号为3,/Resources
说明该页所要包含的资源,包括字体和内容的类型,/MediaBox
792]说明页面的显示大小(以象素为单位),/Contents
R说明页面内容对象的对象号为5。
/Length
44
stream
BT
24
Tf
100
Td
(Hello
World)
Tj
ET
endstream
说明stream对象为字节数,从BT开始,ET结束,包括中间的行结束符。
Stream说明一个流对象的开始。
BT说明一个文字对象的开始。
Tf,Tf说明True
font对象,字体明为F1,
大小为24个象素。
150
Tj,100
说明这一行文字放置的位置,对于Td,
我们可以这样理解,我们的当前X,Y坐标分别加上100和150就是文本的位置,因为在该例子中只有一个对象,那么它的位置就是(100,150),
如果下个对象位置信息为100,
50
Td,
那么它的位置应该就是(100+100,
150+50)也就是(200,200)。
Tj说明文本的内容,当然,如果这里是文本的内容可以写成16进制,用<
包含。
ET说明文字对象的结束
endstream流对象的结束
/Text]
Endobj
/Text]说明PDF的内容类型仅仅为文本,如果有图片则为[/PDF
/Image]
/Subtype
/Type1
/Name
/BaseFont
/Helvetica
Object
six
defines
the
字体对象,不再多作解释。
所有的对象之后是下面的交叉引用表:
xref
8
0000000000
65535
f
0000000009
00000
n
0000000074
0000000120
0000000179
0000000322
0000000415
0000000445
xref说明一个交叉引用表的开始,交叉引用表的第一行0
说明下面各行所描述的对象号是从0开始,并且有8个对象。
////这是尹全超分享的哦、、、、、//////
f,一般每个PDF文件都是以这一行开始交叉应用表的,说明对象0的起始地址为0000000000,产生号(generation
number)为65535,也是最大产生号,不可以再进行更改,而且最后对象的表示是f,表明该对象为free,
这里,大家可以看到,其实这个对象可以看作是文件头。
n就是表示对象1,也就是catalog对象了,0000000009是其偏移地址,00000为5位产生号(最大为65535),0表明该对象未被修改过,
n表示该对象在使用,区别与自由对象,不可以更改。
下面的几行相信大家就可以告诉我含义了。
Trailer
/Size
/Root
startxref
553
%%EOF
trailer
说明文件尾trailer对象的开始。
8说明该PDF文件的对象数目。
R说明根对象的对象号为1。
Startxref
553说明交叉引用表的偏移地址,从而可以找到PDF文档中所有的对象的相对地址,进而访问对象。
%%EOF为文件结束标志。
6.2.PDF解析过程
图4
7.结束语:
到这里,我们对一个最简单的PDF文件的介绍就结束了,我想大家对PDF文件的格式和特定应该已经有所了解了。
当然,我这里介绍的是不完整的,完整的信息,请访问adobe的网站下载:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PDF 文件 结构