如何使用pdfbox修复“定义签名数据范围的意外字节范围值”

时间:2019-09-12 07:20:47

标签: java pdfbox

如何修复“意外的字节范围值,该值定义了签名数据的范围。详细信息:使用PDFBOX(2.0.12)在多个页面中添加外部签名时,签名字节范围无效”

以下代码适用于单页签名,而多页签名不起作用。

PDDocument pddoc = PDDocument.load(file);
PDSignature pds = new PDSignature();
SignatureOptions signatureOptions;
PDRectangle rect;//coordinates to visible signature
File imgFile;//background image in visible signature
String signDisplayInfo;//data to be displayed in visible signature
createVisualSignatureTemplate // generates the visible signature


for(int i=0;i<pageCount;i++) {
   signatureOptions.setVisualSignature(AddVisibleSignature.createVisualSignatureTemplate(pddoc, i, rect, imgFile,signDisplayInfo));
   signatureOptions.setPage(i);
   pddoc.addSignature(pds, signatureOptions);
}
externalSigning = pddoc.saveIncrementalForExternalSigning(fos);
InputStream dataToSign = externalSigning.getContent();
hash = DigestUtils.sha256Hex(dataToSign);

在准备好哈希之后,被发送到另一台服务器以获取签名。得到响应后,将签名添加到pdf中。

String pkcs7Response = responseSignature;
byte[] sigbytes = java.util.Base64.getDecoder().decode(pkcs7Response);                   
externalSigning.setSignature(sigbytes);
pddoc.save(fos);
pddoc.close();

签名验证期间出错。

  

意外的字节范围值定义了签名数据的范围。

     

详细信息:签名字节范围无效

0 个答案:

没有答案