使用iText7的PdfCanvas添加PDF签名边框导致首个签名失效问题
问题:多签名场景下添加PdfCanvas边框导致首个签名失效
我尝试为PDF中的数字签名添加边框,但当多人签名时,第一个签名会失效,第二个签名则有效。推测问题出在使用PdfCanvas上,目前尚未找到其他实现方式。
签名核心代码
PdfSigner signer = new PdfSigner(pdfReader, byteNewPdf_2, new StampingProperties().useAppendMode()); PdfSignatureAppearance appearance = createAppearance(signer, reasonCert, reasonPDF, location, signBoxData, originalHashPdf, certData, metadata, pdfImage, idProcess, nameSigner, signerNumber, signatureDate, isDomain); Rectangle rect = signatureApp.appearanceRectangleSign(possitionResponse, metadata, signBoxData, signerNumber); appearance.setPageRect(rect).setPageNumber(possitionResponse.getPageNumber()); IExternalDigest digest = new BouncyCastleDigest(); IExternalSignature signature = new PrivateKeySignature(pk, digestAlgorithm, provider); signer.signDetached(digest, signature, chain, null, null, null, 0 , subfilter);
边框创建代码调用
PdfCanvas canvas = signatureApp.borderSignPdf(signer, idProcess, signBoxData, possitionResponse, metadata, signerNumber);
画布创建实现代码
return new PdfCanvas(signer.getDocument(), possitionResponse.getPageNumber()) .rectangle(possitionResponse.getX(), possitionResponse.getY(), signBoxData.getSignatureBoxWidth(), signBoxData.getSignatureBoxHeight()) .setLineWidth(!view_BorderSign ? 0 : 1) .stroke();
补充说明:不使用PdfCanvas时,文档可完成多次签名且无失效问题;但添加该画布后,首个签名就会失效,推测问题出在签名创建方式上。
签名初始化代码
PdfSigner signer = new PdfSigner(pdfReader, byteNewPdf_2, new StampingProperties().useAppendMode());
内容的提问来源于stack exchange,提问作者Cemail Sn
相关产品推荐
相关产品推荐

