java pdf证书代码_通过itext对PDF嵌入数字证书
itext从原先的1.*版本到了现在的7.*版本,发生了很大的变化,命名方式变了,API的调用方式也变了,网上很多对PDF做数字证书都是通过比较老的版本进行处理的。
###1、新老版本区别简要介绍(话说很多人不知道如何区别) 新老版本最直接的区别就是包命名方式,itext5之前的命名方式为com.lowagie.text,从itext5以后,命名方式改为com.itextpdf.text,通过这个方式最容易判断。
可以直接的看出itext的两个命名方式,咦( ′◔ ‸◔`) 老版本竟然还有那么多人在使用~~~
itext5之前的版本
itex- t5之后的版本
###2、itext对第三方构建的依赖 通过itext对pdf做数字证书时候,需要用到第三方的加解密工具包,以itext5.5.5为例,查看其用到的org.bouncycastle(著名的加密码工具)包的版本。
###3、代码样例
/*pom配置文件*/
com.itextpdf
itextpdf
5.5.5
com.itextpdf
itext-asian
5.2.0
org.bouncycastle
bcpkix-jdk15on
1.54
org.bouncycastle
bcprov-jdk15on
1.54
public static void makeSignature(String src, String dest) {
BouncyCastleProvider provider = new BouncyCastleProvider();
Security.addProvider(provider);
KeyStore ks = null;
String alias = null;
PrivateKey pk = null;
Certificate[] chain = null;
try {
ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream(KEYSTORE), PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
try {
alias = (String)ks.aliases().nextElement();
pk = (PrivateKey) ks.getKey(alias, PASSWORD.toCharArray());
chain = ks.getCertificateChain(alias);
} catch (Exception e) {
e.printStackTrace();
}
try {
PdfReader reader = new PdfReader(src);
FileOutputStream os = new FileOutputStream(dest);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
//PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0', null, true);
//在一份PDF文档中嵌入多个数字证书请参考上面一行注释的代码
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
appearance.setLayer2Font(new Font(bfChinese, 8, Font.NORMAL));
appearance.setLayer2Text("\n\n\n 浙 江 X X X X 科 技 有 限 公 司");
appearance.setReason("签名防伪");
appearance.setLocation("浙江杭州"); //添加位置信息,可为空
appearance.setContact("service@yunhetong.net");
appearance.setVisibleSignature(new Rectangle(380, 755, 512, 812), reader.getNumberOfPages(), "sig");
ExternalDigest digest = new BouncyCastleDigest();
ExternalSignature signature = new PrivateKeySignature(pk, DigestAlgorithms.SHA256, provider.getName());
MakeSignature.signDetached(appearance, digest, signature, chain, null, null, null, 0, MakeSignature.CryptoStandard.CMS);
} catch (Exception e) {
e.printStackTrace();
}
}
这个也是参考官方样例代码进行修改的~
java pdf证书代码_通过itext对PDF嵌入数字证书相关推荐
- python pdf处理工具_用Python处理pdf文档
介绍 译者翻译了很多Python强大的包,其中,一以贯之的思想是:面向对象.我用下面的翻译来举一个例子,比如:从PyPDF2包中导入PdfFileReader包.PdfFileReader是此包的一个 ...
- PDF模版制作以及用iText生成PDF
最近有个需求,下载PDF类型的文件,故需要实现如下功能: 1.制作PDF模版 2.使用iText下载pdf 制作pdf模版,我是下载的Adobe Acrobat Pro DC制作的,当然网上也有,但是 ...
- itext生成pdf间距_使用itext生成pdf
在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过 在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到 ...
- Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印
前段时间,为了解析PDF,花了不少时间去学习PDFbox和itext,这两个都是处理PDF的开源库,有java和C#的.作为一个刚开始学习这两个开源库的,感觉百度上的资源还是太少了.我做的是一个关于P ...
- java 取pdf 文本域_java – 使用iText从pdf文件中提取文本列
我需要使用iText从pdf文件中提取文本. 问题是:一些pdf文件包含2列,当我提取文本时,我得到一个文本文件,其中列被合并为结果(即同一行中两列的文本) 这是代码: public class pd ...
- java电子日记本代码_计算法日记将规则的价值视为无需计算机的代码
java电子日记本代码 I've been preparing a presentation for the Canadian Institute for the Administration of ...
- 数据表格搜索php代码_手把手教学:提取PDF各种表格文本数据(附代码)
标星★公众号 爱你们♥ 量化投资与机器学习编辑部报道 近期原创文章: ♥ 5种机器学习算法在预测股价的应用(代码+数据) ♥ Two Sigma用新闻来预测股价走势,带你吊打Kaggle ♥ ...
- java三目运算符简化代码_如何使用传播运算符简化代码
java三目运算符简化代码 by Matt Granmoe 通过Matt Granmoe 如何使用传播运算符简化代码 (How to simplify your code with the sprea ...
- java 测试用例核心代码_核心Java测验
java 测试用例核心代码 Welcome to Core Java Quiz. Java is an object-oriented programming language. 欢迎来到Core J ...
- java局域网聊天代码_简单的局域网聊天程序(java版本的)
局域网聊天程序,首先我已经默认你的电脑已经配置好的java开发的一些环境,所需代码有两个java的源代码,他们分别是1:Server_Test.java-------2:Socket_Test.jav ...
最新文章
- python-桶排序
- NSLocalizedString不起作用
- 红帽子RedHat Linux 9.0
- 最新idea设置默认maven
- NSIS V3.08 简体中文增强版
- VDN平台各种数据库连接设置
- java graphics2d 绘图_java GUI Graphics2D 绘图
- 编程(代码、软件)规范(适用嵌入式、单片机、上位机等)
- Vert.x(vertx) 事件总线(EventBus)与 远程服务调用
- 离职后如何优雅退群?不要自作多情说告辞,聪明人都懂这4个尺度
- 量子计算 19 量子算法4 (Shor Part I)
- 新品项目交付频繁 猿团开启APP快速开发新模式
- 猿团将每周免费提供一款APP成品项目作为创业扶持!
- 自主可控!搭载龙芯二号,飞凌嵌入式FET-2K0500-C核心板发布
- 招生通知+4,北京大学计算机学院+中国科学技术大学信息技术学院+吉林大学人工智能学院+深圳大学计算机学院
- uni_app的axios封装
- 3至六年级计算机知识,小学三至六年级下册的信息技术教学计划
- 使用U盘传数据时操作系统做了什么(源码分析)
- 抓取网页数据并解析Android
- FTP的数据连接模式
热门文章
- 电容有哪些用途?常见的九大作用
- Lenovo y50-70 黑苹果hackintosh 10.14.4 Mojave 更新后开机黑屏,引导失败,无法开机
- android 设内网固定ip,如何给手机设置一个固定的内网ip
- 禁用Google英文翻译功能
- Android Property
- html加减乘除除数不能为零,0不能做除数(数学中0为什么不能做除数)
- 华中邀请四届 WHU1567 Sloth's Angry
- Choerodon猪齿鱼实践之Webhook配置
- 亚马逊商品详情API接口(item_get-获得AMAZON商品详情接口),亚马逊API接口
- 信息安全技术国家相关标准一览表