2022年PDF文件结构 .pdf

上传人:Che****ry 文档编号:34879486 上传时间:2022-08-19 格式:PDF 页数:11 大小:838.76KB
返回 下载 相关 举报
2022年PDF文件结构 .pdf_第1页
第1页 / 共11页
2022年PDF文件结构 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年PDF文件结构 .pdf》由会员分享,可在线阅读,更多相关《2022年PDF文件结构 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一个简单的PDF文件结构的分析Adobe 的 PDF参考告诉我们一个PDF文件可以通过下面4 个方面来理解:1. 对象 , 一个 PDF文档是由一个由基本数据类型组成的数据结构。2. 文件(物理结构), 决定对象是如何存放在一个PDF文件中的,它们是如何被访问的,如何被更新的。这个结构是独立于对象的语义的。3. 文档结构 , 说明一些基本的对象类型是如何来表现PDF文档的成分的:页, 字体, 批注,和另外一些内容。4. 内容流 . 一个 PDF文件内容流包含一系列的指令,描述页面的外观或其他图形实体的外观和文件内容。1PDF格式和 HTML,XML格式:一个 PDF文档从根本上来说是一个8 字

2、节序。其实PDF格式和我们已经熟知的HTML ,XML等结构化的文件格式一样,包含有关键字,分隔符,数据等等。不同的是PDF文件是按照二进制流的方式保存的,而html 文件则是文本方式保存的。XML文件一般只包含数据本身,并没有把如何显示的信息放在其中,因此要显示一个XML文件还需要一个Schema文件才能显示,否则看到的将是所有的字节流;HTML包含了数据的同时也包含了一些关于如何显示的信息,但是HTML是基于文本存放的,是可读的,你打开一个HTML文件就能知道所有显示在浏览器里得文字。另外就是HTML不能包含二进制流,它对图像文件的引用都是通过链接的,全部是外部文件的方式来实现的。2PDF

3、规范的发展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 表单

4、, 半色调屏幕,和其他的一些高级色彩特性, 对中文,日文和韩文的支持1.3 2000 数字签名 , 逻辑结构, JavaScript, 嵌入式文件, Masked Images, 平滑阴影 , 支持 CID 字体的附加色彩。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 1.4 2001 文件加密 (128 字节 ), 标签式 PDF, 访问控制,透明,元数据流1.5 2003 文档加密 ( 公钥 ), JPEG 2000 压

5、缩 , 可选的内容组,附加的注解类型1.6 2005 文档加密 (AES), 增加最大文件支持,加入3D 支持,额外的注解类型3PDF文件的基本组成:一个 PDF文件从大的方面来说分4 个部分:l 文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。l 文件体, PDF文件的主要部分,由一系列对象组成。l 交叉引用表, 为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表。l 文件尾,声明了交叉引用表的地址,即指明了文件体的根对象(Catalog ),从而能够找到 PDF文件中各个对象体的位置,达到随机访问。 另外还保存了PDF文件的加密等安全信息(以后详细讨论

6、)。如下图:图 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 4PDF文档的逻辑结构作为一种结构化的文件格式,一个PDF文档是由一些称为“对象”的模块组成的。并且每个对象都有数字标号,这样的话可以这些对象就可以北其他的对象所引用。这些对象不需要按照顺序出现在 PDF文档里面,出现的顺序可以是任意的,比如一个PDF文件有 3 页,第 3 页可以出现在第一页以前,对象按照顺序出现唯一的好处就是能够增加文件的可读性,如果你不会

7、用文本编辑器来阅读PDF结构,那么大可不必关心。正是因为页与页之间的不相关性,就可以对PDF文件的页码进行随机的访问。文件尾( Trail),说明根对象的对象号,并且说明交叉引用表的位置,通过对交叉引用表的查询可以目录对象(Catalog)。这个目录对象是该PDF文档的根对象,包含PDF文档的大纲 (outline)和页面组对象(pages )引用。大纲对象是指PDF文件的书签树;页面组对象(pages)包含该文件的页面数,各个页面对象(page) 的对象号。一个 PDF文档有下图所示的层次关系:图 2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

8、- - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 页面( page)对象作为PDF中最重要的对象,包含如何显示该页面的信息,例如使用的字体,包含的内容(文字,图片等),页面的大小。当然里面的子项也可以是其他对象的引用。页面中包含的信息是包含在一个称为流(stream )的对象里,这个流的长度(字节数)必须直接给出或指向另外一个对象。如下图:图 3 5 PDF 的基本语法:文件的第一行是文件头,指明了该文件所遵从的PDF规范的版本号, 它出现在PDF文件的第一行。一个对象的第一行一般有两个数字和关键字“obj ”。例如

9、:3 0 obj endobj 第一个数字称为对象号,来唯一标识一个对象的,第二个是产生号,是来表明它在被创建后的第几次修改, 所有新创建的PDF文件的对象号应该都是0,即第一次被创建以后没有被修改过。上面的例子就说明该对象的对象号是3,而且创建后没有被修改过。对象的内容应该是包含在之间的,最后以关键字endobj 结束 . 6文件 Hello World的文件分析:61文件的具体分析%PDF-1.0 文件头,说明符合PDF1.0 规范1 0 obj endobj Catalog对象(根对象)2 0 obj 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -

10、- - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - endobj outline对象(此处它的计数为0,说明没有书签)3 0 obj endobj pages 对象(页面组对象),/Type /Pages 说明自身的属性,对象的类型为页码,/Count 1说明页码数量为1,/Kids 4 0 R说明页的对象为4, 这里要说明的是如果有多个页面,就多个页面直接连续下去,比如说/Kids 4 0 R 10 0 R, 就说明该PDF的第一页的对象号是4, 第二页的对象号是 10。4 0 obj /Type /Page /

11、Parent 3 0 R 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - /Resources /Font /ProcSet 6 0 R /MediaBox 0 0 612 792 /Contents 5 0 R endobj 页对象, /Parent 3 0 R说明其父对象的对象号为3,/Resources /Font /ProcSet 6 0 R 说明该页所要包含的资源,包括字体和内容的类型,/MediaBox 0 0 6

12、12 792说明页面的显示大小(以象素为单位),/Contents 5 0 R说明页面内容对象的对象号为5。5 0 obj stream BT /F1 24 Tf 100 100 Td (Hello World) Tj ET endstream endobj 说明 stream 对象为字节数,从BT 开始, ET 结束,包括中间的行结束符。Stream 说明一个流对象的开始。BT说明一个文字对象的开始。/F1 24 Tf,Tf 说明 True font对象,字体明为F1, 大小为 24 个象素。100 150 Td (Hello World) Tj, 100 100 说明这一行文字放置的位置,

13、对于 Td, 我们可以这样理解,我们的当前X,Y 坐标分别加上100 和 150 就是文本的位置,因为在该例子中只有一个对象,那么它的位置就是(100,150), 如果下个对象位置信息为100, 50 Td, 那么它的位置应该就是(100+100, 150+50 )也就是( 200,200)。( Hello World) Tj说明文本的内容,当然,如果这里名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - - - - - - - 是文本的内容可以写成16

14、 进制,用 包含。ET说明文字对象的结束endstream 流对象的结束6 0 obj /PDF /Text Endobj /PDF /Text说明 PDF的内容类型仅仅为文本,如果有图片则为/PDF /Image 7 0 obj endobj Object six defines the 字体对象,不再多作解释。所有的对象之后是下面的交叉引用表:xref 0 8 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师

15、精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - 0000000120 00000 n 0000000179 00000 n 0000000322 00000 n 0000000415 00000 n 0000000445 00000 n xref说明一个交叉引用表的开始,交叉引用表的第一行0 8 说明下面各行所描述的对象号是从0开始,并且有8 个对象。0000000000 65535 f,一般每个PDF文件都是以这一行开始交叉应用表的,说明对象0 的起始地址为 0000000000 ,产生号 (generation number)为 6553

16、5,也是最大产生号,不可以再进行更改,而且最后对象的表示是f, 表明该对象为free, 这里,大家可以看到,其实这个对象可以看作是文件头。0000000009 00000 n就是表示对象1,也就是catalog对象了, 0000000009 是其偏移地址,00000 为 5 位产生号(最大为65535), 0 表明该对象未被修改过, n表示该对象在使用,区别与自由对象,不可以更改。下面的几行相信大家就可以告诉我含义了。Trailer startxref 553 %EOF trailer 说明文件尾trailer对象的开始。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

17、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - /Size 8说明该 PDF文件的对象数目。/Root 1 0 R说明根对象的对象号为1。Startxref 553 说明交叉引用表的偏移地址,从而可以找到PDF文档中所有的对象的相对地址,进而访问对象。%EOF 为文件结束标志。62PDF解析过程图 4 7结束语:到这里,我们对一个最简单的PDF文件的介绍就结束了,我想大家对PDF文件的格式和特定应该已经有所了解了。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 当然,我这里介绍的是不完整的,完整的信息,请访问adobe 的网站下载:http:/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁