PDF文档格式Word格式.docx
《PDF文档格式Word格式.docx》由会员分享,可在线阅读,更多相关《PDF文档格式Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
新加特性
1.1
加入了文档加密(40字节),线索树,名字树,链接,设备独立色彩资源
1.2
表单,半色调屏幕,和其他的一些高级色彩特性,对中文,日文和韩文的支持
1.3
数字签名,逻辑结构,JavaScript,嵌入式文件,MaskedImages,平滑阴影,支持CID字体的附加色彩
1.4
文件加密(128字节),标签式PDF,访问控制,透明,元数据流
1.5
文档加密(公钥),改良的压缩技术,JPEG2000压缩,可选的内容组,附加的注解类型
1.6
文档加密(AES),增加最大文件支持,加入3D支持,额外的注解类型
1.7
改进评注(Comment)与保全(Security)的支援,3D的支援功能也获得改善
项目简介
……..
PDF文件格式
a.header:
内含版本资讯。
b.body:
内含实际的文件内容。
c.cross-referencetable(简称xreftable):
内含对象参照的相关资讯。
d.trailer:
内含指向xreftable、body区的重要相关资讯
(1)标准的pdf文档格式
PDF区域内容呈现方式
PDF是以行的方式来呈现资料的,每一行的结束字符,可以是CarriageReturn(ASCII13)、也可以是LineFeed(ASCII10)、或是两者的组合(ASCII13紧接着ASCII10)。
各行内的资料,若遇到%字符,表示该行从%字符后面的所有的资料都是注解,必须加以略除,但有一个例外,那就是流对象(streamobject)的内容,并非以行的方式呈现,必须另行处理。
另外要注意的是,PDF里的资料是大小写有关的。
PDF文件头(header)
PDF文件的首行就是header部分,声明PDF文件的版本号
header只有一行注解文字,且固定以”%PDF-“开头,后面紧接着PDF的版本
例如:
%PDF-1.3
文件主干部分(body)
一个文件的主干部分包括表示文档内容的对象。
对象是文档的基本类型,表示文档的各个组成部分,如字体,页面,和实例图形。
从PDF1.5开始,主干部分也可以包含对象流,每个对象流都包含一系列间接对象。
参照表(Cross-ReferenceTable)
参照表包含的信息允许对文件中的间接对象进行随意访问,以便不需要阅读整个文件即可定位任何特殊对象了。
(从PDF1.5开始,某些或所有的参照表信息也可以被含在参照流中。
参照表是PDF文件唯一有固定格式的一部分,每个参照表部分都从一个包含关键字xref的行开始。
跟着这个行的是一个或多个参照子部分,这些分部可以以任何顺序出现。
子部分的构造有益于逐步更新,因为它允许一个新的参照部分附加到PDF文件中来,而包含的选项紧紧只用于已经被附加或删除的对象。
对一个从未被更新过的文件,参照部分只包含一个子部分,它的对象编号从0开始。
每个参照表项目固定20byte,
其格式如下:
Byte
内容
0-9
对象所在的文件位置,靠右,不足时补0
10
空白字符
11-15
generationnumber,靠右,不足时补0,表示对象的修改次数
generationnumber<
=65535,一但达到这个数字,该对象编号便不能再使用,而必须另行增加一个编号
16
17
n表示对象使用中,f表示对象未被使用(free)
18-19
空白与换行字符
以下便是一个xreftable的例子:
xref--------------------------------------------------------------参照表开始的的关键字
03------------------------------------------0(开始的对象号),3(后跟的对象个数)
00000000365535f---------------------对象的在文件中的位置;
对象的生成号;
对象的状态(f/n)
00000012700000n
00000000000001f
51
00000434600000n
这个Cross-ReferenceTable有两个参照子部分:
第一个参照子部分是指出了对象0,1,2在文件中的位置(3,127,0)以及说明0,2对象未被使用(f)。
第二个参照子部分是指出了对象5在在文件中的位置(4346),以及说明了对象正在使用(n)
trailer区域
PDF文件跟踪器使得应用程序在阅读文件时能够快速的搜索到参照表和某个特殊对象的位置。
应用程序应从尾段开始阅读PDF文件。
文件的最后一行只包含文件的结束符号,即%%EOF.〕
前面两行包括关键字startref和字节偏移值--从文件开始部分到最后面参照表部分中的关键字xref的开始部分。
放置在startref行前面的是跟踪器字典,由关键字trailer和紧跟后面的<
<
键值对..>
>
组成
trailer区块的内容如下:
trailer
trailer资料
startxref
xreftable开始的文档位置
%%EOF
trailer资料主要由{/属性名称属性值}*所组成,以下便是一个例子:
/Size22
/Root20R
/Info10R
/Prev408
下表是trailer中各属性的意义:
Trailer字典内容列表
KEY
TYPE
VALUE
Size
integer
(必选项)整个PDF文件的对象个数
ID
array
分别表示旧ID与新ID
Prev
如果有,后跟数字表示下一个交叉引用表的位置;
没有,表示最后一张交叉表
Root
dictionary
(必选值)文件里存放Catalog的对象编号
Info
dictionary
表示文件里的摘要资讯所在对象编号
Encrypt
表示PDF档有加密,其后接的词典资料,便是用来解密用的
整个读取trailer和xreftable的过程应为:
(1)由档尾trailer区块里找到startxref,取得第一个参照表开始的文档位置
(2)移到该参照表的位置,开始读取xreftable内容
(3)读取后面紧接着的trailer区块内容
(4)找寻其后紧接的trailer区块中是否有Prev属性,没有即结束
(5)如果有Prev,则其后的数字视为下个xreftable的文档位置,回到步骤2
对象流(ObjectStreams)
PDF1.5引进了一个全新的流概念,对象流,它包含了一系列PDF对象。
对象流的用途是允许压缩更多数目的PDF对象,以此来大量减少PDF文件大小。
流中的对象都是指压缩对象。
任何一个PDF对象都可以出现在对象流,以下几种情况例外
●流对象
●生成编号非0的对象
●一篇文档的加密字典
●表示对象流字典中Length选项值的对象
除了流的标准关键字外,对象流字典还描述了包含一下选项
对象流专用选项
KEY关键字
TYPE类型
TYPE类型
Type
Name
(必选)Objstrm,表示该对象含有对象流
N
Integer
(必选)对象流中压缩对象的个数
First
(必选)首个压缩对象的字节偏移量(在解压后的流中)
Extends
Stream
(可选)一个引用对象流,当前对象留被认为是一个扩充流
例子解析:
/n3:
说明对象流中对象的个数为3
/first24:
说明对象流中第一个压缩对象在流中的位置(解压缩后的)
1101254713665:
对象流中包含的3个对象11,12,13,并指出了对象相对于流中第一个对象的的偏移地址(0,547,665)
参照流(Cross-ReferenceStreams)
从PDF1.5开始,参照信息被存储在参照流中而不是参照表中。
参照流提高以下优势:
●更简洁紧凑的表示参照信息。
●可以访问存储在对象流中的压缩对象,并允许以后加入新的参照选项类型。
参照流是流对象,包含一个字典和一个流对象,参照流字典相当于trailer,
流对象相当于参照表。
如以下例子所示:
注意现在紧跟着关键字startxref的值是参照流的偏移值而不是关键字xref。
对于那些全部用参照流的文件(PDF1.5及以上)关键字xref和跟踪器不再被使用。
因此,除了startxrefaddress%%EOF片断和标注特例外,一个PDF1.5的文件完全是一序列的对象。
参照流字典Cross-ReferenceStreamDictionary
除了对所有流和trailer字典的通用选项外,参照流还包含下表所示的选项
参照流字典专用附加选项
说明
type
name
值必须是xref(说明该流为参照流)
size
integer
说明参照表中对象的个数
index
array
一个数组,第一个值表示为第一个对象的编号,第二个值表示参照流中对象的总数
prev
从文件开始部分到先前参照流的开始部分的子节偏移值。
本选项与跟踪器字典(表3.13)中的Prev选项作用相同,(只有当文件有多个参照流的时候才会呈现;
在混合参照文件(pdf1.4)中没有意义)
W
参照流数据Cross-ReferenceStreamData
参照流中的每个选项都有一个或多个数据域,第一个数据域指派选项类型,在PDF1.5中,只允许类型0,1,和2。
其它的值都被看成是空值对象引用,这样就允许以后定义新的选项类型
数据以渐进的数据域编号编写;
每个数据域的长度受W选项中对应的值制约,每个为位置对应