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有所帮助。
pdf文件内容查看器 -- 采用wpf开发的更多相关文章
- 深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- 文件MD5查看器工具与源码实现及下载
由于工作中经常需要查看文件的MD5值,先前网上找了几个MD5值查看工具,但基本都是选择文件,还没有复制功能,于是今天我就自己编写了个MD5查看工具,支持文件拖拽查看,并可以复制功能. 由于本工具比较小 ...
- 深入学习Python解析并解密PDF文件内容的方法
前面学习了解析PDF文档,并写入文档的知识,那篇文章的名字为深入学习Python解析并读取PDF文件内容的方法. 链接如下:https://www.cnblogs.com/wj-1314/p/9429 ...
- robotframework 测试工具添加PDF文件内容匹配插件
robotframework 这个需要了解的请度娘.本文实现的是一个小功能.大体分为如下几个步骤 1)给定一个pdf文件. 2)读取pdf文件内容,并解析为文本内容. 3)通过给定的内容,比对pdf ...
- 怎么编辑PDF文件内容,PDF文件编辑方法
怎样编辑PDF文件内容?这是一个常常困扰我们的问题,工作当中我们经常会收到PDF格式的文件,但有时的文件内容不是我们想要的或者是觉得不合理的需要改掉.但是每次有这样的问题时都没有什么好的解决方法,每次 ...
- 编辑方法分享之如何编辑PDF文件内容
我们现在在工作中会经常使用到PDF文件,还会有遇到需要编辑PDF文件的时候,PDF文件的编辑问题一直是个大难题.很多朋友在面对PDF文件的时候束手无策,不知道该怎么对它进行编辑.下面小编就教给大家一个 ...
- 如何修改PDF文件内容,PDF怎么添加背景
很多的情况下,大家都会遇到PDF文件,不管是在学习中还是在工作中,对于PDF文件,文件的修改编辑是需要用到PDF编辑软件的,在编辑文件的时候,发现文件的页面是有背景颜色的,又该如何修改背景颜色呢,不会 ...
- Linux 文件内容查看工具介绍-cat,less,more,tail,head
Linux 文件内容查看工具介绍 作者:北南南北来自:LinuxSir.Org摘要: 本文讲述几种常用文件内容的查看工具,比如cat.more.less.head.tail等,把这些工具最常用的参数. ...
- Linux 之 文件内容查看
文件内容查看 参考教程:[千峰教育] 文件内容查看: cat: 作用:一次性顺序显示文件的所有内容 格式:cat file tac: 作用:一次性倒序显示文件的所有内容 格式:tac file hea ...
随机推荐
- CODE FESTIVAL 2017 qual A C Palindromic Matrix(补题)
彩笔看到题目后,除了懵逼,没有啥反应了,唯一想的就是 这是不是dp啊?看了题解才发现,原来是这样啊. 画几个矩阵看看就能看出来规律. 思路:先假设这是个M * N的矩阵 如果M和N都是偶数,则每个出现 ...
- Python第三方包的egg info 是什么东西
xxx.egg-info 一般与 xxx文件夹同时存在,一起来表示完整模块.
- DOMjudge配置
DOMjudge配置补充 系统环境为 Debbian GNU/Linux 9 (stretch) 64-bit 在Web server configuration中, ln -s etc/apache ...
- 洛谷P3150 pb的游戏(1)题解 博弈论入门
题目链接:https://www.luogu.org/problem/P3150 这道题目是博弈论的入门题. 我们以 必胜态 和 必败态 来讲解这个问题. 首先,下面的图片演示了前8个数的必胜态和必败 ...
- joinColumns和inverseJoinColumns的用法
最近在工作中使用springside,里面用到了hibernate的多对多 一开始我在配置department(部门表)和menu(栏目表)的时候,这样写的. Department实体类中的getMe ...
- [转]分布式监控工具Ganglia 介绍 与 集群部署.
如果你目的很明确就是冲着标题来的,不爱看我唠叨,请直接进入第二个分割线之后的内容. 其实之前就是有做Swift监控平台的打算的,但是因为没什么硬性需求么,也不要紧的,就一直搁置了.最近实验室来了个大二 ...
- React 简书
create-react-app jianshu yarn add styled-components -D 利用js写css样式 样式会更高效 https://github.com ...
- 2019年第二阶段我要变强个人训练赛第八场 B.序列(seq)
传送门 B.序列(seq) •题目描述 给出一个长度为n的序列a,每次对序列进行一下的某一个操作. •输入 第一行两个整数n,q表示序列长度和操作个数. 接下来一行n个数,表示序列a. 接下来q行表示 ...
- eclipse中maven报错--Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a ...
- apply call 用法
1.对象转数组 tips 先看怎么用 再研究方法原理 var obj = { 0: 'qian', 1: 'long', 2: 'chu', 3: 'tian', ...