软损坏PDF文件的修复技术(PDF结构简介)
1 引言PDF 文件目前已成为网络上最为广泛流行的一种文件格
式, 由于文件在网络上载和下载的过程受网络不稳定的影响,
常常出现文件的损坏。常见情况包括: 文件字节的丢失( 如网络
传输丢包) 、错误( 如磁盘损坏) 或者增加( 如病毒感染) 这几种
情况。
在信息安全领域, PDF 文件的修复技术有着非常重要的意
义, 主要体现在两个方面: 第一, 该技术是信息安全服务领域中
的一项重要内容。通过该修复技术可以将受损的 PDF 文件中
的文本内容和文件信息提取出来, 尽可能减轻用户损失; 第二,
该技术还是不良信息过滤的必要基础。通过该技术, 可以提取
出 PDF 的纯文本信息, 并移交给后续过滤模块处理。
对于 PDF 文件的修复, 目前国外内尚未有真正意义上的
解决技术及相关解决方案。由于 PDF 文件结构的复杂性和多
样性, 要实现确实可行的修复工具和技术方案困难很大。
Adobe Acrobat 浏览器对 PDF 文件的修复功能也相当有限, 仅
限于对那些与页面显示关系不大的信息损坏( 如那些可有可无
的附带文件信息: 著者、创建时间等) 或冗余的信息的丢失( 如
一些不重要的操作符/标识符) 。
本文所探讨的 PDF 修复技术已作为上海交通大学承接的
上海市科学技术委员会攻关项目《“软损坏”文件修复系统》( 项
目编号: 035115015) 的文件修复模块之一, 已得到证实和应用。
2 PDF 文件结构简介
结构化的文档格式 PDF(Portable Document Format) 是由
美国排版与图像处理软件公司 Adobe 于 1993 年首次提出的。
它从页面描述语言 PS(PostScript) 发展而来, 具有与 PS 几乎相
同的页面描述能力和相似的描述方法。但与 PS 不同的是,
PDF 除了能描述复杂版面外, 还具有交互功能( 如超链接、交
互表单等) 、页面随机存取及字体仿真描述等特性。
2.1 PDF 的文件结构及损害对文件打开显示的影响
PDF 的文件结构( 即物理结构) 包括四个部分: 文件头、文
件体、交叉引用表和文件尾。
文件头(Header) 指明了该文件所遵从 PDF 规范的版本号,
它出现在 PDF 文件的第一行。%PDF- 1.2 表示该文件格式符
合 PDF1.2 规范, 如果丢失或损坏这部分信息, PDF 阅读器无法
确认文件的版本信息, 将被认为非法的 PDF 文件, 报告出一个
不支持的文件类型的错误, 不显示文件的任何信息。
文件体(Body) 由一系列的 PDF 间接对象组成。这些间接
对象构成了 PDF 文件的具体内容如字体、页面、图像等等。如
果丢失或损坏这部分信息, 会造成部分信息( 文本或图片) 无法
显示或无法正常显示。
交叉引用表(Cross- reference Table) 则是为了能对间接对
象进行随机存取而设立的一个间接对象地址索引表。如果丢失
或损坏这部分信息, 意味着损坏整个 PDF 文件的各部分信息
的定位, PDF 阅读器无法根据交叉引用表找到 PDF 页面显示
所要的信息存放的位置, 将报告为一个文件打开时发生错误,
严重时将不显示任何信息。
文件尾(Trailer) 声明了交叉引用表的地址, 指明文件体的
根对象(Catalog) , 还保存了加密等安全信息。根据文件尾提供
的信息, PDF 的浏览器可以找到交叉引用表和整个 PDF 文件
的根对象, 从而实现整个 PDF 文件的随机存取。如文件尾部的
损坏将报告为一个文件打开时发生错误, 不显示任何信息。
2.2 PDF 的文档主体简介
PDF 文件主体文档架构反映了文件体中间接对象间的等
级层次关系。PDF 的文档结构是一种树型结构, 树的根节点就
是 PDF 文件的根对象(Catalog) 。根节点下有四个子树: 页面树
(Pages Tree) 、书签树 (Outline Hierarchy) 、 线程 树 (ArticleThreads)、名字树(Named Destination)。 沙发自己拿下了,此文为抛砖引玉,如果有哪位朋友有完整版的的PDF数据结构希望可以发出来共享一下,感激! 这个很少人会的 再说修复的活很少 大家要吃饭 所以研究的人也少 pdf檔運用也是比較廣泛的,損壞也是常有的事... 不错,支持楼主!!!!!!!!! 不错,支持楼主 这个不错啊
页:
[1]