电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java實現添加、驗證PDF數字簽名的方法示例

瀏覽:3日期:2022-08-08 18:22:33
目錄Jar文件獲取及導入方法:

在設置文檔內容保護的方法中,除了對文檔加密、添加水印外,應用數字簽名也是一種有效防偽手段。數字簽名的文件比較容易驗證,并且具有較高的權威性和可信度。在PDF文檔中,有可直接添加或驗證數字簽名的功能方法,下面的文章中,將通過Java程序來介紹添加數字簽名到PDF文檔,以及驗證簽名是否有效。

使用工具:Spire.PDF for Java

Jar文件獲取及導入方法:

方法1:可通過官網下載jar文件包。下載后,解壓文件,并將lib文件夾下的Spire.Pdf.jar文件導入到Java程序。參考如下導入效果:(這里程序將jar文件分別導入了兩個module)

Java實現添加、驗證PDF數字簽名的方法示例

方法2:可通過maven倉庫安裝導入。

Java代碼示例

【示例1】添加數字簽名到PDF

import com.spire.pdf.*;import com.spire.pdf.graphics.PdfImage;import com.spire.pdf.graphics.PdfTrueTypeFont;import com.spire.pdf.security.GraphicMode;import com.spire.pdf.security.PdfCertificate;import com.spire.pdf.security.PdfCertificationFlags;import com.spire.pdf.security.PdfSignature;import java.awt.*;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;public class AddCertificate { public static void main(String[]args){//加載PDF文檔PdfDocument doc = new PdfDocument();doc.loadFromFile('test.pdf');//加載pfx證書,及證書秘鑰PdfCertificate cert = new PdfCertificate('Cermia.pfx','123654yes!');//添加數字簽名到指定頁面,并設置其位置和大小PdfSignature signature = new PdfSignature(doc, doc.getPages().get(2), cert, 'MySignature');Rectangle2D rect = new Rectangle2D.Float();rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 340, (float) doc.getPages().get(0).getActualSize().getHeight() - 230), new Dimension(280, 150));signature.setBounds(rect);//設置簽名為圖片加文本模式signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);//設置簽名的內容signature.setNameLabel('簽字者:');signature.setName('Mia');signature.setContactInfoLabel('聯系電話:');signature.setContactInfo('02881705109');signature.setDateLabel('日期:');signature.setDate(new java.util.Date());signature.setLocationInfoLabel('地點:');signature.setLocationInfo('成都');signature.setReasonLabel('原因:');signature.setReason('文檔所有者');signature.setDistinguishedNameLabel('DN: ');signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());signature.setSignImageSource(PdfImage.fromFile('sign.png'));//設置簽名的字體signature.setSignDetailsFont(new PdfTrueTypeFont(new Font('Arial Unicode MS', Font.PLAIN, 9)));//設置文檔權限為禁止更改signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);signature.setCertificated(true);//保存文檔doc.saveToFile('AddSignature.pdf');doc.close(); }}

數字簽名添加效果:

Java實現添加、驗證PDF數字簽名的方法示例

【示例2】驗證數字簽名有效性

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;import javax.swing.*;public class ValidateSignature { public static void main(String[]args){//創建PdfDocument實例PdfDocument doc = new PdfDocument();//加載含有簽名的PDF文件doc.loadFromFile('SignnedFile.pdf');//獲取域集合PdfFormWidget pdfFormWidget = (PdfFormWidget) doc.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();//判定簽名是否有效boolean result = signature.verifySignature();if (result) { String str1 =' 有效簽名'; JOptionPane.showMessageDialog(null,str1);} else { String str2 =' 無效簽名'; JOptionPane.showMessageDialog(null,str2);} }} }}

驗證結果:

Java實現添加、驗證PDF數字簽名的方法示例

擴展:Java 添加簽名域到PDF,可以參考這篇文章。

到此這篇關于Java實現添加、驗證PDF數字簽名的方法示例的文章就介紹到這了,更多相關Java PDF數字簽名內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 顺辉瓷砖-大国品牌-中国顺辉 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 搬运设备、起重设备、吊装设备—『龙海起重成套设备』 | 仿真植物|仿真树|仿真花|假树|植物墙 - 广州天昆仿真植物有限公司 | 罐体电伴热工程-消防管道电伴热带厂家-山东沃安电气 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 顺辉瓷砖-大国品牌-中国顺辉 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 国际船舶网 - 船厂、船舶、造船、船舶设备、航运及海洋工程等相关行业综合信息平台 | 自动焊锡机_点胶机_螺丝机-锐驰机器人| 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | PC阳光板-PC耐力板-阳光板雨棚-耐力板雨棚,厂家定制[优尼科板材] | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 车辆定位管理系统_汽车GPS系统_车载北斗系统 - 朗致物联 | 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 渣油泵,KCB齿轮泵,不锈钢齿轮泵,重油泵,煤焦油泵,泊头市泰邦泵阀制造有限公司 |