一、概述及程序环境要求

本文以Java代码演示如何获取PDF文档中的数字签名信息,包括签名人、签名位置、日期、原因、联系方式、签名在文档中的坐标等等。

程序环境包括:

  • Spire.Pdf.jar(jar版本:3.11.6
  • Jdk 1.8.0(版本要求>=1.6.0版本即可)
  • IDEA

编辑代码前先导入jar到Java程序,两种导入方法供选择,可按需任选其一即可:

1. 下载jar包导入:下载后解压到指定路径,并将lib文件夹下的spire.pdf.jar手动导入Java程序;

2. maven程序中配置pom.xml文件,指定spire的maven路径及依赖,参考如下:

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

配置完成后,导入jar到程序。

 

注:程序环境可不用安装Adobe Acrobat

二、Java代码

import com.spire.pdf.*;
import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormFieldWidgetCollection;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget; public class GetSignature {
public static void main(String[] args) {
//创建PdfDocument实例
PdfDocument pdf = new PdfDocument();
//加载含有签名的PDF文件
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);
//获取签名
PdfSignature signature = signatureFieldWidget.getSignature();
String location = signature.getLocationInfo();
String reason = signature.getReason();
String data = signature.getDate().toString();
String name = signature.getSignatureName(); System.out.println("签名位置信息:"+ location +"\n"+
"签名原因:" + reason +"\n"+
"签名日期:"+ data +"\n"+
"签名人:"+ name +"\n"+
"文档中的签名坐标:X = "+ signatureFieldWidget.getLocation().getX()+ " Y = "+ signatureFieldWidget.getLocation().getY()
);
}
}
}
}

签名获取结果:

相关阅读推荐Java 添加及验证PDF数字签名

Java 获取PDF中的数字签名信息的更多相关文章

  1. C# 获取PDF中的数字签名证书

    PDF中的加数字签名是对文档权威性的有效证明.我们在向PDF文档添加签名时,需要准备可信任的签名证书.同时,对已有的签名,可验证签名是否有效,也可以获取文档中的签名证书信息.下面,以C#代码示例展示如 ...

  2. java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数.java解析URL问号后的参数.有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需 ...

  3. Java获取路径中的文件名(正则表达式)

    Java获取路径中的文件名(正则表达式) 目标 在这个路径中我想得到model2 /E:/2017-02-21--SoftWare/github/test/Java/poiDemo_word2exce ...

  4. java 获取pdf内容

    1. 说明 将pdf中的文字读取处理还有一些限制:1. 文档的安全属性不能过于严格 2. 不能存在图片. 2. 直接贴相关的源码 有两种读取方式,maven对应的pom文件 <dependenc ...

  5. Java 在PDF中添加水印

    在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题. PDF文件容易复制和传播,版权难以保护. 在海量文件中也很难区分信息,例如,你有没有打开一个文件夹,里面有这么多同名的 ...

  6. java从pdf中提取文本

    一(单文件转换):下载pdfbox包,百度搜pdfbox.(fontbox-1.8.16.jar和pdfbox-app-1.8.16.jar) package pdf; import java.io. ...

  7. 利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字

    序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...

  8. Java 在PDF中添加页面跳转按钮

    在PDF 中可通过按钮来添加动作跳转到指定页面,包括跳转到文档首页.文档末页.跳转到上一页.下一页.或跳转到指定页面等.下面将通过java代码来演示如何添加具有以上几种功能的按钮. 使用工具: Fre ...

  9. Java 读取PDF中的表格

    一.概述 本文以Java示例展示读取PDF中的表格的方法.这里导入Spire.PDF for Javah中的jar包,并使用其提供的相关及方法来实现获取表格中的文本内容.下表中整理了本次代码使用到的主 ...

  10. Java 在PDF中添加工具提示|ToolTip

    本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...

随机推荐

  1. 可视化-vscode安装pandas

    pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速 ...

  2. salesforce零基础学习(一百三十三)ListView的button思考

    本篇参考: salesforce零基础学习(九十五)lightning out salesforce零基础学习(一百一十)list button实现的一些有趣事情 https://help.sales ...

  3. Dotnet工具箱:开源、免费的纯前端工具网站,带你探索10大工具分类和73个实时在线小工具

    1. 前言 大家好,我是沙漠尽头的狼. Dotnet工具箱是一个纯前端的.开源和免费的工具网站,周末我参考了开源项目it-tools,对网站界面文字进行了汉化,并重新部署了网站.该网站共有10大工具分 ...

  4. DPDK丢包那些事

    本文来自博客园,作者:T-BARBARIANS,博文严禁转载,转载必究! 一.前言 DPDK技术原理相关的文章不胜枚举,但从实战出发,针对DPDK丢包这一类问题进行系统分析的文章还是凤毛麟角. 刚好最 ...

  5. LibOciLib使用说明(2017-1-26更新)

    LibOciLib使用说明 整理者:赤勇玄心行天道 QQ:280604597 Email:280604597@qq.com 大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的! ...

  6. js性能优化解决办法

    1. 减少http请求次数:CSS Sprites, JS.CSS 源码压缩.图片大小控制合适:网页 Gzip,CDN 托管,data 缓存 ,图片服务器 2. 前端模板 JS + 数据,减少由于HT ...

  7. Flask后端开发(一)-基础知识和前期准备

    目录 1.背景介绍 1.1. 项目背景 1.2. 项目难点 1.3. 项目环境 2. flask后端开发实现的功能 3. flask部署和前后端对接 3.1. flask运行配置和服务器部署 3.2. ...

  8. 对于goland相对较新一些版本新建项目时没有go mod模式选项的坑

    前言 对于一些小白在网上看很早的一些go视频,使用goland2020.3.x版本或者其之前版本创建新项目,里面会有GO Modules(vgo)这个选项,也就是gomod模式创建新项目,然而对于现在 ...

  9. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-27-处理单选和多选按钮-番外篇

    1.简介 前边几篇文章是宏哥自己在本地弄了一个单选和多选的demo,然后又找了网上相关联的例子给小伙伴或童鞋们演示了一下如何使用playwright来处理单选按钮和多选按钮进行自动化测试,想必大家都已 ...

  10. linux锁定脚本防止脚本重复运行

    问题描述:设置在定时任务中的脚本一定要注意防止脚本重复执行,要不然会带来一些想象不到的结果. 方式一:使用锁定文件的方式来进行防止脚本重复运行,类似数据库socket文件,但是这种情况有一种弊端就是, ...