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有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​WeihanLi.Npoi 根据模板导出Excel

WeihanLi.Npoi 根据模板导出ExcelIntro原来的导出方式比较适用于比较简单的导出&#xff0c;每一条数据在一行&#xff0c;数据列虽然自定义程度比较高&#xff0c;如果要一条数据对应多行就做不到了&#xff0c;于是就想支持根据模板导出&#xff0c;在 1.8.0 版本中引入了根据…

UC浏览器如何开启html5,如何开启手机uc浏览器中的极速模式

如何开启手机uc浏览器中的极速模式当我们在使用手机的时候&#xff0c;可以下载uc浏览器来浏览网页&#xff0c;为了提升网页的浏览速度&#xff0c;可以开启浏览器中的极速模式&#xff0c;接下来就由小编来告诉大家如何操作。具体如下&#xff1a;1.第一步&#xff0c;打开手…

前端扫盲:什么是API网关?为什么它有用?

API 通常被称为应用程序从后端服务访问数据和业务逻辑的前门。API 本质上是一个软件向其他人或程序提供的接口&#xff0c;允许他们与该软件进行交互。 在创建 API 时&#xff0c;需要选择编程语言(Java、Python、PHP 等)来编写 API 逻辑&#xff0c;还需要将 API 部署到服务器…

ProjectFileManager 发布!项目文件管理效率提升10倍以上!

值此特别的新春假期&#xff0c;盛派网络在这里先祝大家新春安康&#xff01;鼠年平安、幸福、发财、万事如意&#xff01;也祝福疫区的同胞和医护人员平安度过这一段关键时期&#xff01;延长的假期显然也为我们日常工作带来了一些障碍&#xff0c;为了能够利用工具进一步提高…

简历中能熟练使用计算机怎么写,过了计算机二级,可以在简历里写“熟练掌握Excel”吗?...

原标题&#xff1a;过了计算机二级&#xff0c;可以在简历里写“熟练掌握Excel”吗&#xff1f;咨询/快消/互联网/四大/投行PEVC/券商绝大多数岗位都会要求“熟练掌握Excel”而尽管绝大多数同学“实际水平根本达不到工作要求”但是每一位同学都敢在简历上放一句薛定谔的「熟练掌…

.Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还需要掌握identity server4的基本用法,关于identity server4因为涉及到两个协议Oath2.0和openid conn…

【C# 调用 Go 语言】0x2 参数、返回值与类型转换

在上篇文章【C# 调用 Go 语言】0x1 Hello Golang 中&#xff0c;我们将 Golang 源码编译为动态链接库&#xff08;dll&#xff09;&#xff0c;用 C# 调用 Golang 导出的方法并成功的看到了控制台的输出。本篇文章将对 C# 调用 Golang 方法做更详细的介绍&#xff0c;涉及如何…

《ASP.NET Core 微服务实战》-- 读书笔记(第1章 、第2章)

译者序微服务设计方法清晰定义了各个开发团队的业务边界&#xff0c;微服务框架以不同方式实现了服务之间的协作与集成。.NET Core 作为全新的 .NET 技术&#xff0c;它不仅完全开源、跨平台&#xff0c;更面向云原生开发进行了大量细致的优化。它完全模块化&#xff0c;不依赖…

html缩进标签quote,HTML blockquote 标签

HTML 标签标签同样是对文本进行引用&#xff0c;不同的是该标签引用的是长文本。标签内的内容会自动有缩进。实例定义一个摘自另一个源的块引用&#xff1a;For 50 years, WWF has been protecting the future of nature. The worlds leading conservation organization, WWF w…

使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务

真没想到大过年还在家里写代码写文章&#xff0c;本来还打算自驾半个月没想出现这情况。在这里祝福全国同胞在新的一年里身体健康&#xff01;希望阳光天气早日照射在这片土地上&#xff0c;给人带来新一年的希望&#xff01;NetBenchmark是针对网络服务压测的开源组件&#xf…

如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性

这是Serilog系列的第三篇文章。第1部分-如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出第2部分-Serilog高级玩法之用Serilog记录所选终结点附加属性第3部分-使用Serilog.AspNetCore记录MVC属性&#xff08;本文&#xff09;第4部分-从Serilog请求记录中排除运行…

广东省计算机媒体大赛,广东省大学生计算机设计大赛

广东省大学生计算机设计大赛由广东省教育厅主办。比赛宗旨为进一步提高广东省高校计算机教学和信息技术与学科深度融合的水平&#xff0c;激发省内各高校各专业大学生学习计算机知识和技能的兴趣和潜能&#xff0c;提升大学生运用信息技术解决实际问题的综合实践能力&#xff0…

哈希表-拉链法及应用举例

哈希表存储结构&#xff1a; 1.开放寻址法 2.拉链法 哈希表的主要作用&#xff1a; 把一个较大(0-10^9 )的数据映射到较小(0-N(N一般为10^5 到 10^6))的数据 哈希函数&#xff1a;可以把一个从-10^19 到10^19 的中的一个数映射到0-10^5之间的一个数 1.哈希函数怎么写&#x…

各互联网公司延期上班一览

【延期上班&#xff0c;自我隔离】自从1月26日&#xff0c;国家颁布了延长春节假期的公告之后&#xff0c;互联网行业各公司也纷纷更新了自己的延期上班计划&#xff0c;如下表所示&#xff1a;可以看到&#xff0c;多数公司采取了在家办公的这种模式&#xff0c;还有些公司直接…

计算机系统占有率,微软继续领跑PC操作系统市场 Win10占有率突破25%

腾讯科技讯&#xff0c;据外媒报道&#xff0c;发布一年半之后&#xff0c;Windows 10的市场占有率终于跨过25%这一里程碑&#xff0c;这就意味着&#xff0c;如今世界上每四台电脑中就有一台运行Windows 10系统。Net Applications的数据显示&#xff0c;Windows 10发布后四周内…

递推求组合数

组合数计算公式&#xff1a; 递推公式&#xff1a; 代码模板&#xff1a; #include <iostream> using namespace std; const int N 1010; int c[N][N];int main() {int a,b;cin>>a>>b;//a在下&#xff0c;b在上for (int i 0;i<N;i)for (int j 0;j&…

微软发布 Power BI 2020 上半年发行计划

微软官方与日前发布了 Power BI 在2020上半年的发行计划。本文将在 2020.9 之前都有用&#xff0c;建议收藏查看。从今年开始&#xff0c;我们除了客观描述 Power BI 的特性外&#xff0c;还将加入大量主观观点态度和吐槽&#xff0c;不过不管怎么吐&#xff0c;都只能继续用&a…

AcWing 523. 组合数问题

组合数 Cmn 表示的是从 n 个物品中选出 m 个物品的方案数。  举个例子&#xff0c;从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2), (1, 3), (2, 3) 这三种选择方法。  根据组合数的定义&#xff0c;我们可以给出计算组合数 Cmn 的一般公式&#xff1…

远程办公经验为0,如何将日常工作平滑过度到线上?

导语 | 受到疫情影响&#xff0c;很多企业开始考虑远程办公。近日&#xff0c;TVP群里的各位老师们对此话题展开了热烈讨论。TVP张善友老师作为一名创业者&#xff0c;也决定开启远程办公。本文是他对相关经验总结而得的方案&#xff0c;并列出了相关产品清单&#xff0c;希望对…

华为v30pro计算机在哪里,请问V30PRO的数据怎么转到电脑上

[分享交流]请问V30PRO的数据怎么转到电脑上26343电梯直达花粉199050253新学乍练发表于 2020-10-2 18:48:36来自&#xff1a;荣耀V30 Pro 5G最新回复 2020-10-2 19:18:00冷不悔独步江湖发表于 2020-10-2 18:50:59来自&#xff1a;荣耀V30 Pro 5G你所说的数据具体点&#xff0c;图…