PDF文档中可添加数字签名,在添加签名前,需要准备可信任签名证书。对文档中已有的签名,可验证书签是否有效。也可通过一定方法来获取数字签名或者签名证书信息。下面以Java代码示例展示如何读取签名的证书信息。本文将分为两个部分介绍,即编辑代码前的环境配置和具体的代码示例。

一、环境配置

  • IntelliJ IDEA (jdk 1.8.0)
  • 包含签名的PDF测试文档
  • Java PDF库:Free Spire.PDF for Java

导入Java库的方法如下:

1.手动导入。

下载库到本地,解压,找到lib文件下的jar文件。然后执行如下图方法手动导入:

2.Maven仓库下载导入。

在pom.xml文件中配置如下内容:

<repositories><repository><id>com.e-iceblue</id><url>https://repo.e-iceblue.cn/repository/maven-public/</url></repository></repositories>
<dependencies><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>4.4.1</version></dependency>
</dependencies>

二、Java代码示例

代码方法主要分为以下几个主要步骤来读取:

1. 实例化PdfDocument类的对象。

2. 调用PdfDocument.loadFromFile()方法加载指定路径下的已签名的PDF文档。

3. 通过PdfFormWidget. getFieldsWidget()方法获取PdfFormFieldWidgetCollection类的域集合。

4. for循环文档中的域,判断获取的域是否为签名域。如果判定结果为true,则获取文档中的所有PdfSignatureFieldWidget类的签名域。

5. 最后,调用PdfSignatureFieldWidget.getSignature().getCertificate()方法获取签名的证书信息。

import com.spire.pdf.*;
import com.spire.pdf.widget.PdfFormFieldWidgetCollection;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;public class GetCertificateInfo {public static void main(String[] args) {//实例化PdfDocument类的对象,并加载PDF文档PdfDocument pdf = new PdfDocument();pdf.loadFromFile("AddSignature.pdf");//获取域集合PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.getForm();PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.getFieldsWidget();//遍历域for (int i = 0; i < pdfFormFieldWidgetCollection.getCount(); i++){//判定是否为签名域if (pdfFormFieldWidgetCollection.get(i) instanceof PdfSignatureFieldWidget){//获取签名域PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) pdfFormFieldWidgetCollection.get(i);//获取签名证书信息String certificateInfo = signatureFieldWidget.getSignature().getCertificate().toString();System.out.println(certificateInfo);}}}
}

执行程序后的读取的证书信息结果:

—End—

Java 获取PDF数字签名证书信息相关推荐

  1. java解析pdf获取pdf中内容信息

    java解析pdf获取pdf中内容信息 今日项目中需要将pdf中的数据获取到进行校验数据,于是前往百度翻来覆去找到以下几种办法,做个笔记,方便日后查询. 废话不多说,我要直接上代码装逼了 第一种 使用 ...

  2. Java获取12306余票信息(二)

    接上 前面我们说到如何用Firefox浏览器抓取数据,并 对json进行了分析,下面就是用Java代码来进行操作.以下代码都没有导入包,有需要自行导入 Java获取12306余票信息(一) Java获 ...

  3. Java获取照片的Exif信息,并解析GPS

    Java获取照片的Exif信息,并解析GPS 1. 效果图 2. 什么是Exif? 3. 源代码 参考 ❤️ 这篇博客将介绍什么EXIF,以及如何用Java语言读取Exif信息,并转换经纬度为位置信息 ...

  4. Java获取12306余票信息(一)

    写在前面 写给自己,也分享给大家. Java获取12306余票信息(一) Java获取12306余票信息(二) Java获取12306余票信息(三) 步骤: 首先找找12306的API 1.打开谷歌浏 ...

  5. java获取Pdf文件页码

    java获取Pdf文件页码步骤如下: 引入依赖: <dependency><groupId>org.apache.pdfbox</groupId><artif ...

  6. java获取PDF页面长宽

    java获取PDF页面长宽 1.引入依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId ...

  7. Java识别获取pdf中文字信息(此方法任意pdf的信息都可以拿到)

    一.举例需求(拿较难的发票识别举例) 平时工作或者开发过程中如果遇到需要识别pdf发票中信息的情况,如获取发票代码号码,开票日期,校验码等,比如下面的发票,项目中需要读取发票中信息 二.方法原理 使用 ...

  8. 使用Java获取操作系统和硬件信息

    https://www.chendd.cn/information/viewInformation/experienceShare/332.a 距离上一次写博客已经过去2个半的月份了,也是工作忙,也是 ...

  9. PHP获取SSL客户端证书信息

    项目需要获取到客户端的证书信息,https都配置走通了,只有证书和key才能登陆网站,但是想要做到,相应的证书只能其相应的账号登陆,这就只有在有自己的key而且知道相应的账号密码才能登陆. 之前也没做 ...

  10. java 获得header,Java获取Http响应Header信息

    本文中演示如何通过URLConnection获取Http响应Header信息 1.从响应中获得Header信息 URL obj = new URL("http://www.qiyadeng. ...

最新文章

  1. 转: IO设计模式:Reactor和Proactor对比
  2. js MediaSource h264
  3. 福建师范大学计算机考研好考吗,福建师范大学考研难吗?一般要什么水平才可以进入?...
  4. videowriter最小的编码格式_cv2.VideoWriter() 指定写入视频帧编码格式
  5. SpringBoot 封装返回类以及session 添加获取
  6. jdbc驱动程序_JDBC操作数据库的步骤
  7. mvp内粗泄露问题_如何在一天内从MVP转到生产服务器
  8. Android Paint类属性说明
  9. 加密算法(二)——MD5,Base64,DES,RSA加密算法解析
  10. powerdesigner 16.5 Could not Initialize JavaVM!
  11. 维也纳新生生活指南(2018春季版)
  12. Win11如何增强麦克风?Win11增强麦克风的设置
  13. CruiseControl.Net 与 Gendarme 集成
  14. 把对方微信拉黑了怎么恢复
  15. 年末大盘点 2008十大最受欢迎的装机软件
  16. php对接阿里云API调用企业税号查询的高级实战案例解析(下拉筛选查询、远程调用API、xm-select组件应用)
  17. QT常用控件——QComboBox控件
  18. javacv+远程视频直播+音视频录制+视频抓取
  19. 如何看待2021届校招薪资倒挂? 为什么互联网大厂校招的薪资一年比一年高?
  20. GIT创建仓库及导入源码小记

热门文章

  1. c语言case后语句,switch语句中case后的标号是什么
  2. 元胞自动机:森林火灾模拟(Python:numpy、seaborn)
  3. 阿虎烧烤的新感悟-O2O你真的会玩吗?
  4. 烧烤摊如何走O2O之路 微博微信运营案例分享
  5. python代码表达失恋_利用python程序浪漫安慰失恋妹纸
  6. 阿里 P7 到底该具备什么样的能力?
  7. NPOI遍历excel表格
  8. 《灵飞经5·龙生九子》 第二十二章 河咸海淡(上)
  9. 国际冠码与国际电话区号
  10. FRM-10102错误解决