快捷搜索:
lnmp linux5.14 ECDH算法 chrome81 微信7.0.12安卓版 nginx解决跨域 灵鸽 Security实现JWT stringify用法 数据库 5G网络技术 springcloud入门 iOS13.1.3正式发布 vuejs iphone 程序员技术开发平台 idea下载地址 归并排序 弹性布局 keycloak 省市区多级联动 后台用户权限设计 win10有问题的更新 轻量级分布式日志 ios13 webstorm 区块链技术 微服务 redis技术教程 接口测试工具

iText7实现PDF电子签章

  本文记录iText7实现PDF电子签章


  提前准备

  1、keystore文件,生成自签名证书,猛戳:SpringBoot系列——启用https

打开cmd,执行以下命令  keytool -genkeypair -alias stamper -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore e:/Java/stamper.keystore -storepass 123456

  2、印章图片,这里有个在线制作电子公章小工具:http://makepic.net/tool/signet.html

iText7实现PDF电子签章

  3、pom需要引入新依赖包

        <!-- 条形码、电子签章 -->         <dependency>             <groupId>com.itextpdf</groupId>             <artifactId>barcodes</artifactId>             <version>${itext7.version}</version>         </dependency>         <dependency>             <groupId>com.itextpdf</groupId>             <artifactId>hyph</artifactId>             <version>${itext7.version}</version>         </dependency>         <dependency>             <groupId>com.itextpdf</groupId>             <artifactId>font-asian</artifactId>             <version>${itext7.version}</version>         </dependency>         <dependency>             <groupId>com.itextpdf</groupId>             <artifactId>sign</artifactId>             <version>${itext7.version}</version>         </dependency>         <!-- 加密软件包 -->         <dependency>             <groupId>org.bouncycastle</groupId>             <artifactId>bcprov-jdk15on</artifactId>             <version>1.69</version>         </dependency>         <dependency>             <groupId>org.bouncycastle</groupId>             <artifactId>bcpkix-jdk15on</artifactId>             <version>1.69</version>         </dependency>

  代码

    /**      * 电子签章      * @param src 需要签章的pdf文件路径      * @param dest 签完章的pdf文件路径      */     public static void sign(String src, String dest)  {         final String KEYSTORE = "E:\\Java\\stamper.keystore";//keystore文件路径         final char[] PASSWORD = "123456".toCharArray();// keystore密码         final String STAMPER_SRC = "E:\\Java\\stamper.gif";//印章图片路径          try (PdfReader reader = new PdfReader(src); FileOutputStream os = new FileOutputStream(dest);){             //读取keystore ,获得私钥和证书链 jks             KeyStore ks = KeyStore.getInstance("JKS");             ks.load(new FileInputStream(KEYSTORE), PASSWORD);             String alias = ks.aliases().nextElement();             PrivateKey pk = (PrivateKey) ks.getKey(alias, PASSWORD);             Certificate[] chain = ks.getCertificateChain(alias);              //创建签章工具PdfSigner、设定数字签章的属性             PdfSigner stamper = new PdfSigner(reader, os, new StampingProperties());             PdfSignatureAppearance appearance = stamper.getSignatureAppearance();             appearance.setReason("签名原因:系统自动签名盖章");             appearance.setLocation("签名地点:xxx系统");             appearance.setContact("联系方式:huanzi.qch@qq.com");              //加盖图章图片             ImageData img = ImageDataFactory.create(STAMPER_SRC);             Image image = new Image(img);             appearance.setPageNumber(1);             appearance.setPageRect(new Rectangle(650, 50, image.getImageWidth(), image.getImageHeight()));             appearance.setSignatureGraphic(img);             appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);              //No such provider: BC : 问题解决,加BC库支持             Security.addProvider(new BouncyCastleProvider());              //摘要算法             IExternalDigest digest = new BouncyCastleDigest();             //签名算法             IExternalSignature signature = new PrivateKeySignature(pk, DigestAlgorithms.SHA256, BouncyCastleProvider.PROVIDER_NAME);              //调用itext签名方法完成pdf签章             stamper.setCertificationLevel(1);             stamper.signDetached(digest,signature, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);              System.out.println("操作完成!");         }catch (Exception e){             e.printStackTrace();             System.err.println("操作异常...");         }     }

  效果

  我们用 test() 生成的简单PDF文件来进行电子签章测试

    //测试     public static void main(String[] args) {         //test();          //html2pdf();          sign("E:\\Java\\test.pdf","E:\\Java\\test2.pdf");     }

iText7实现PDF电子签章

iText7实现PDF电子签章

iText7-pdf电子签章 iText7电子签章 springboot pdf电子签章 iText7 itext7 Spring https jdk15 签名算法 Java http html ide jdk cmd 算法 加密 IT OT

您可能还会对下面的文章感兴趣:

日历

热门文章

  • 2 阿里开源的分布式事务框架 Seata
  • 3 json在线转换工具
  • 4 用户目录下的java_error_in_phpstorm.hprof文件可以删除吗
  • 5 Proxy error: Could not proxy request /user/login from localhost:9529 to http://127.0.0.1:9528/mock.
  • 6 网页分享按钮的制作
  • 7 ipad忘记密码恢复出厂设置的方法
  • 8 2019/2020 Google镜像大全,让你轻松访问谷歌引擎
  • 9 future versions of Elasticsearch will require Java 11
  • 10 Linux技巧:cp命令自动创建不存在的目录和只复制修改的文件

最新文章

  • 9.4亿澳元!澳大利亚“押注”量子计算机

  • “SJTU思源二号”探月卫星随嫦娥六号飞天

  • 从“水果”到“原石”,探讨科技成果价值评估

  • 2024可持续发展青年科学家奖全球申报启动

  • 科幻教育沙龙首场活动在京举办

  • 监控摄像头悬垂

  • 直播教种地 比女儿赚的多

  • 智力运动馆启用,两大实验室揭牌

  • 保洁人员捡到8架无人机送还

  • 中国创造如何走向世界?

关注梦想屋

哆哆女性网沈阳营销网站设计5h制作网站周易男名济源起名宝宝起名大全杨姓购物网站设计报价女孩起名周易中石化加油卡电子文档签名周公解梦 吃枣seo发包教程品牌男装起名微信好的营销推广材料起名罗姓起名大全大全怎么做网站优化啊姓孟家谱令字辈起名文字起名字有哪些诫子书读后感300字免费的h5制作网站网站建设最新男孩宝宝起名带一字生辰八字算命可信吗韩姓男宝宝起名字建设集团公司网站谁会解梦生辰八字婴儿起名软件seo站内优化八大要素win10永久禁止数字签名合肥网站建设工作室淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化