Java 获取PDF数字签名证书信息
PDF文档中可添加数字签名,在添加签名前,需要准备可信任签名证书。对文档中已有的签名,可验证书签是否有效。也可通过一定方法来获取数字签名或者签名证书信息。下面以Java代码示例展示如何读取签名的证书信息。本文将分为两个部分介绍,即编辑代码前的环境配置和具体的代码示例。
一、环境配置
IntelliJ IDEA (jdk 1.8.0)
包含签名的PDF测试文档
Java PDF库:Free Spire.PDF for Java
导入Java库的方法如下:
1.手动导入。
下载库到本地,解压,找到lib文件下的jar文件。然后执行如下图方法手动导入:



二、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数字签名证书信息的更多相关文章
- java获取https网站证书,附带调用https:webservice接口
一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...
- java 获取pdf内容
1. 说明 将pdf中的文字读取处理还有一些限制:1. 文档的安全属性不能过于严格 2. 不能存在图片. 2. 直接贴相关的源码 有两种读取方式,maven对应的pom文件 <dependenc ...
- java获取request的头信息
1.获取全部头信息: //get request headers private Map<String, String> getHeadersInfo() { Map<String, ...
- java获取客服端信息(系统,浏览器等)
String agent = request.getHeader("user-agent"); System.out.println(agent); StringTokenizer ...
- JAVA 获取jdbc.properties配置信息
Properties myProperty = new Properties();String jdbcPath = PathKit.getWebRootPath()+File.separator+& ...
- JAVA获取运行环境的信息
System.getProperties().list(System.out); 得到运行环境的信息
- C# 获取PDF中的数字签名证书
PDF中的加数字签名是对文档权威性的有效证明.我们在向PDF文档添加签名时,需要准备可信任的签名证书.同时,对已有的签名,可验证签名是否有效,也可以获取文档中的签名证书信息.下面,以C#代码示例展示如 ...
- Java获取操作系统信息
今天在看jdk的demo时候发现java获取系统操作系统的一些信息,例如内存使用情况,于是自己也想研究研究! 百度一番,发现有2种方法! 1.sun自带的API 2.第三方jar(Sigar) 先 ...
- 【java 获取数据库信息】获取MySQL或其他数据库的详细信息
1.首先是 通过数据库获取数据表的详细列信息 package com.sxd.mysqlInfo.test; import java.sql.Connection; import java.sql.D ...
随机推荐
- 10.10 Rewrite 实战
将baidu.com跳转到www.baidu.com server { listen 80; server_name baidu.com; rewrite ^/ http://www.baidu.co ...
- 41 位 Contributor 参与,1574 个 PR,不容错过的版本更新!
6 月 25 日,在商业公司 SphereEx 正式成立一月之余的今天,我们很高兴的宣布 Apache ShardingSphere 迎来了 5.0.0-beta 版本的正式发布.经过半年多的优化和打 ...
- 我们携手啦 | SphereEx 正式加入 openGauss 社区
近日,SphereEx 签署 CLA ( Contribution License Agreement,贡献许可协议),正式加入 openGauss 社区. SphereEx 和 openGauss ...
- Java领域的表现层的三种技术--jsp、freemarker、velocity
10月份忙碌的参加秋招并获得了5个成都.上海.广州等不同地区的工作offer,最终选择了广州,11月底来到公司实习,很快,就跟进了公司的项目了,原本以为可以和宣讲会时报的志愿一样--Java开发,但是 ...
- C#特性知识图谱-一、委托
一. 委托 1.1 委托定义 委托可以看成是一个方法的容器,将某一具体的方法装入后就可以把它当成方法一样调用.一个委托类型的变量可以引用任何一个满足其要求的方法.委托类似于C语言中的函数指针,但并不完 ...
- Redis:学习笔记-04
Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...
- MySQL:怒刷牛客网“sql实战”
MySQL:怒刷牛客网"sql实战" 在对MySQL有一定了解后,抽空刷了一下 牛客网上的 数据库SQL 实战,在此做一点小小的记录 SQL1 查找最晚入职员工的所有信息 sele ...
- [对对子队]会议记录5.14(Scrum Meeting1)
今天已完成的工作 何瑞 工作内容:初步完成循环指令系统 相关issue:实现循环语句系统的逻辑 相关签入:feat:循环语句的指令编辑系统初步完成 吴昭邦 工作内容:将流水线系统和循环 ...
- BUAA-软件工程第一次作业
软件工程第一次作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标 团队完成好的软件,并对自己作出规划 这个作 ...
- websocket入门案例(echo)
websocket是用来干什么的,具体的请自行百度. 本文实现一个简单的websocket的入门小例子,实现客户端发送一句换,服务器端返回.即一个简单的交互. 一.服务器端的实现 1.创建一个类实现S ...