PDF数字签名信息获取(Java)
利用Java代码,读取PDF内的签名信息,包括签发单位、Thumbprint、签发时间等信息。
此处使用了Spire.PDF的相关依赖,Maven项目可使用以下方式引入,或者直接导入相关jar包即可。
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories>
<dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>10.1.3</version> </dependency> </dependencies>
以下为代码,基本上官方文档内容(https://www.e-iceblue.cn/pdf_java_security/get-signature-info-of-pdf-document-using-java.html),增加了签名信息部分:
import com.spire.pdf.PdfDocument; 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("D://1.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(); String certificateInfo = signature.getCertificate().toString(); // 签名的基础信息 System.out.println("签名位置信息:" + location + "\n" + "签名原因:" + reason + "\n" + "签名日期:" + data + "\n" + "签名人:" + name + "\n" + "文档中的签名坐标:X = " + signatureFieldWidget.getLocation().getX() + " Y = " + signatureFieldWidget.getLocation().getY()); // 签名证书的相关内容 System.out.println(certificateInfo); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现