zoukankan      html  css  js  c++  java
  • pdf文件内容查看器 -- 采用wpf开发

    前言 pdf是一种应用非常广的版式文档格式,已成为事实上的国际标准。关于pdf格式的文章汗牛充栋,本文也是关于pdf格式的文章,但是本文不是纸上谈兵;本人这几周一直研究pdf格式内容,不但对pfd格式的内容有所了解,同时也写了一款软件,可以方便查看pdf文件内容。使用该软件,同时结合pdf相关文章,可以很快掌握pdf格式内容。

    软件截图: 软件下载地址 点我下载

    pdf文件内容简要介绍

    这里对pdf文件格式做个粗略介绍,只有了解了这些内容,才能知道如何使用该软件。

    pdf文档总结构如下:

    1)header:主要包含版本信息

    2)tailer:pdf树结构的入口点。

     3)交叉索引表;该表包含pdf每个obj在文件中的位置,根据该表,可以快速定位和加载obj的内容。对于大文件,不必一次加载所有的内容,只需加载当前页包含的obj即可。

     4) body。 包含obj对应的内容。

    pdf obj树状结构

    要完成对pdf文件的分析和显示,首先需要构建pdf文件的obj的树状模型。这个树状模型的入口点就是trailer,trailer包含root元素(Catalog),其下包含Pages,Page。Page中包含内容和资源。

     

    结合软件分析pdf文件格式

    用该软件打开一个pdf文件,对照示例来分析。

    1)pdf header: 

    2)trailer和交叉引用表,

    3)body 由一系列obj组成。每个obj由唯一编号,可根据编号定位到内容。

     4)文档树状结构

    页集是页的集合,pdf规范建议用平衡树来组织页,便于快速查找。

     

    编程心得

    1 不能严格按照pdf标准来分析pdf。

    pdf文档应用非常广,生成pdf文件的软件非常多。不是所有的pdf文档都严格符合标准。所谓“林子大了,什么鸟都有“。所以开发软件要经过大量的pfd文档测试。

    2 分析obj的内容

    pdf索引表只给出了obj开始文件位置。obj一般包含dictionary和stream两部分。所以需要根据关键词来解析obj,这就需要有一定的技巧。dictionary开始和结束的关键字为“<<” 和">>",但是dictionary可能包含子dictionary。只靠关键字是无法确定dictionary的开始和结束位置的,需要一定的技巧。

     

     

     3 读取obj的效率。

    不必一次加载所有的obj,可以采取按需加载。

    后记 读取pdf文件的内容,在内存中构建obj树形结构,是下一步分析和显示pdf的基础。本人通过阅读相关资料,加上编写代码,实现了对pdf文件内容的分析。理论和实践相结合,就能快速的掌握相关知识。本软件可以方便的窥探pdf内部结构,希望该软件为你了解和开发pdf有所帮助。

  • 相关阅读:
    推荐一本书 改善你的视力:跟眼镜说再见
    Gentoo中gcc4.1.2到gcc4.3.2的升级
    msbuild学习的一些相关链接
    SqlServer 2005安装问题
    Gentoo linux中安装php5运行环境
    sql 时间函数(全)
    asp.net中的对话框
    win7 资源管理器指向我的电脑
    C/C++ 位操作 总结
    【转】Java字节序转换
  • 原文地址:https://www.cnblogs.com/yuanchenhui/p/WpfPdfExplorer.html
Copyright © 2011-2022 走看看