使用的itext5-itextpdf-5.5.11.jar,百度网盘下载地址:链接:https://pan.baidu.com/s/1-2tQcQBF5IUghUU_swwg7g 密码:te0q
/**
*
* 单多次签章通用
* @param inputStream
* @param certInputStream
* @param certPwd
* @param signClearPath
* @param signBytes
* @param imagePath
* @param digestAlgorithm
* @param provider
* @param subfilter
* @param reason
* @param location
* @return
*/
public static Map signPdf(InputStream inputStream // 需要签章的pdf文件流
, InputStream certInputStream // 签名证书文件流
, String certPwd// 签名私钥
, String signClearPath//签章背景透明图片
, byte[] signBytes// 签章背景图片
, String imagePath// 头部图片
, String digestAlgorithm // 摘要算法名称,例如SHA-1
, String provider // 密钥算法提供者,可以为null
, CryptoStandard subfilter // 数字签名格式,itext有2种
, String reason // 签名的原因,显示在pdf签名属性中,随便填
, String location){
byte[] signedFileData = null;
Map resultMap = new HashMap();
String ret = "-1";
String desc = "签名失败";
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
//将证书文件放入指定路径,并读取keystore ,获得私钥和证书链
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(certInputStream, certPwd.toCharArray());