电子签章pdf文件之我见

news/2024/11/7 10:40:42/

        现在电子签章主要针对pdf文件,所以如果要验签,那么必须要熟悉pdf文件结构。Pdf文件知识点较多,仅pdf标准文档就已经到第7版了,最后一个版本就有800+页,学习起来难度相对较大,但如果仅仅是为了验签,那么看完本文即可满足主要需求,然后根据需要有目的去标准中查询相关知识点。

需要注意的是:本文的文档结构是我自己总结的,与标准中说法不一致。从验签的角度来理解是可以的,但是做pdf文件相关的编程,请参考pdf标准

1、pdf文件结构

Pdf文档基本上是由文件头、文件体、交叉引用表、trailer等。如下图:

 

文件体是由一系列的x 0 obj。。。endobj数据组成简介对象组成。简介对象并不一定是按对象号大小顺序排列的。如果出现相同编号的简介对象,以后出现的简介对象为准。

Trailer中定义了交叉表的起始位置。

交叉引用表是pdf文件中重要的部分。它保存了所有简介对象在pdf文件中的物理偏移地址以及简介对象是否可用。交叉引用表可能有多个。

通常,交叉引用表具有以下形式:

 

交叉引用表通常以xref开始,其中0 4表示对象号以0开始的连续4个对象,其中对象号0和3表示的对象不存在或不可用。对象号1和2表示的对象正常使用中。以下是实际pdf中的一个交叉引用表:

 

那么一个pdf文件中的交叉引用表是在什么地方呢?通常文件尾部以startxref开头的部分定义了交叉表位置,比如包含上述交叉引用表的pdf文件尾部:

 

那么交叉引用表的起始位置就是303961,十六进制表示的位置是0x4a359,正好和上述截图位置相符(xref的起始位置)。

2、pdf文件的增量更新

增量更新提供了一种更新pdf文件而又无需完全重写的方法。更改将附加到文件尾部,保留原始内容:

 

增量更新的次数没有限制。所以一个pdf文件中可能会存在多个交叉引用表。判断是否又多个交叉引用表的简单方法就是查找是否有多个”%%EOF”

3、Pdf文件签章验签

增量更新方法为pdf签章提供了方便。具体pdf签章参考pdfref-7规范的8.7章节(大概是第725页)。简单的说,pdf签章信息一定存在一个简介对象中,这个对象既包含/content,它包含了签章结构体的十六进制字符串,也包含/byteRange,它定义了这个签章信息针对的pdf文件的那些内容(物理位置)。同样的多个签章一定会多个类似的简介对象。所以pdf签章验签就是找到这些简介对象,然后对这个简介对象中的签章结构体按照国标要求进行验签即可。

pdf简介对象列举:https://github.com/paulsoncheng/PDFSpy

或github中搜索mupdf。


http://www.ppmy.cn/news/356739.html

相关文章

vue里面使用pdfjs-dist+fabric实现pdf电子签章!!!

2022.9.6 一、需求 最近领导提了一个新需求:仿照e签宝,实现pdf电子签章! 最终实现效果图 这是做出来的效果图,当然还有很多待修改 二、思路 然后我就去看了下人家e签宝的操作界面,左侧是印章,右侧是…

使用Java对PDF进行电子签章

使用Java对PDF进行电子签章 开始之前前期准备开始生成keystore证书来张材料全家福编码项目结构签署工具类 开始之前 公司近期做的项目用到了电子签章(给PDF盖章签名),这过程真是曲折。恰逢现在时间比较空闲(有时间摸鱼&#xff0…

1024程序员节|历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案

🍅程序员小王的博客:程序员小王的博客 🍅CSDN地址:程序员小王java 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我&#xff0c…

怎样在PDF文件上添加印章

1、首先将需要添加制公司的印章的文件转换成.pdf文件 2、从Adobe 官网上下载Adobe Acrobat XI Pro 这款软件并安装到我们的电脑上,安装完后打开软件,界面如下: 3、准备好我们要添加水印的pdf文档,用Adobe Acrobat XI打开&#xf…

Word盖章和PDF盖章

一、电子签章的作用 对文档进行数字签名与签署纸质文档的原因大致相同,数字签名通过使用计算机加密来验证 (身份验证:验证人员和产品所声明的身份是否属实的过程。例如,通过验证用于签名代码的数字签名来确认软件发行商的代码来源和完整性。…

css移动端

目录 谷歌模拟器 屏幕分辨率 视口 二倍图 适配方案 rem 简介 问题 媒体查询 移动端 设备宽度不同,HTML标签字号设置多少合适 flexible.js rem-移动端适配 less 注释 运算 嵌套 变量 导入 导出 禁止导出 谷歌模拟器 模拟移动设备,方…

诚迈科技智能汽车软件产业峰会落幕,智达诚远峰昇操作系统FusionOS发布!

4月6日,由诚迈科技、智达诚远共同主办,苏州工业园区投资促进委员会协办,苏州工业园区智能网联产业促进会大力支持的中国(苏州)智能汽车软件产业峰会在苏州盛大举行。本次活动以“创新融合 聚力赋能”为主题&#xff0c…

Antv/L7中使用高德地图插件

L7可以使用高德地图作为底图,也可以使用高德地图提供的插件,如工具栏,缩放条等。 官方文档中的引入方式如下const sc new Scene({id: xxxx-map,logoVisible: false,map: new GaodeMap({style: default,pitch: 0,zoom: 13.056,plugin: [AMap…