1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java凭证加盖电子印章_源码分享:在pdf上加盖电子签章

java凭证加盖电子印章_源码分享:在pdf上加盖电子签章

时间:2021-08-17 07:40:01

相关推荐

java凭证加盖电子印章_源码分享:在pdf上加盖电子签章

publicvoidsign(Stringsrc/

/需要签章的pdf文件路径 ,Stringdest/

/ 签完章的pdf文件路径 ,ImageDataimg/

/ 印章图片 ,intpageNum/

/ 印在第几页 ,Rectanglerectangle/

/ 印章显示的位置 ,Certificate[]chain/

/证书链 ,PrivateKeypk/

/签名私钥 ,StringdigestAlgorithm/

/摘要算法名称,例如SHA-1 ,Stringprovider/

/ 密钥算法提供者,可以为null ,PdfSigner.CryptoStandardsubfilter/

/数字签名格式,itext有2种 ,Stringreason/

/签名的原因,显示在pdf签名属性中,随便填 ,Stringlocation)/

/签名的地点,显示在pdf签名属性中,随便填 throwsGeneralSecurityException,IOException{ /

/下边的步骤都是固定的,照着写就行了,没啥要解释的 PdfReaderreader=newPdfReader(src); PdfDocumentdocument=newPdfDocument(reader); document.setDefaultPageSize(PageSize.TABLOID); /

/目标文件输出流 FileOutputStreamos=newFileOutputStream(dest); /

/创建签章工具PdfSigner ,最后一个boolean参数 /

/false的话,pdf文件只允许被签名一次,多次签名,最后一次有效 /

/true的话,pdf可以被追加签名,验签工具可以识别出每次签名之后文档是否被修改 PdfReaderreader2=newPdfReader(src);/

/ PdfSigner stamper = new PdfSigner(reader2, os, true); StampingPropertiesstampingProperties=newStampingProperties(); stampingProperties.useAppendMode(); PdfSignerstamper=newPdfSigner(reader2,os,stampingProperties); /

/ 获取数字签章属性对象,设定数字签章的属性 PdfSignatureAppearanceappearance=stamper.getSignatureAppearance(); appearance.setReason(reason); appearance.setLocation(location); /

/设置签名的位置,页码,签名域名称,多次追加签名的时候,签名与名称不能一样 /

/签名的位置,是图章相对于pdf页面的位置坐标,原点为pdf页面左下角 /

/四个参数的分别是,图章左下角x,图章左下角y,图章宽度,图章高度 appearance.setPageNumber(pageNum); appearance.setPageRect(rectangle); /

/插入盖章图片 appearance.setSignatureGraphic(img); /

/设置图章的显示方式,如下选择的是只显示图章(还有其他的模式,可以图章和签名描述一同显示) appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC); /

/ 这里的itext提供了2个用于签名的接口,可以自己实现,后边着重说这个实现 /

/ 摘要算法 IExternalDigestdigest=newBouncyCastleDigest(); /

/ 签名算法 IExternalSignaturesignature=newPrivateKeySignature(pk,digestAlgorithm,BouncyCastleProvider.PROVIDER_NAME); /

/ 调用itext签名方法完成pdf签章 stamper.setCertificationLevel(1); stamper.signDetached(digest,signature,chain,null,null,null,0,PdfSigner.CryptoStandard.CADES); }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。