Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复';定义有符号数据范围的意外字节范围值';使用pdfbox_Java_Pdfbox - Fatal编程技术网

Java 如何修复';定义有符号数据范围的意外字节范围值';使用pdfbox

Java 如何修复';定义有符号数据范围的意外字节范围值';使用pdfbox,java,pdfbox,Java,Pdfbox,如何修复定义签名数据范围的意外字节范围值。详细信息:使用PDFBOX(2.0.12)在多个页面中添加外部签名时,签名字节范围无效 以下代码适用于单页签名,而多页签名不起作用 PDDocument pddoc = PDDocument.load(file); PDSignature pds = new PDSignature(); SignatureOptions signatureOptions; PDRectangle rect;//coordinates to visible signatu

如何修复定义签名数据范围的意外字节范围值。详细信息:使用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,即使签名只能在一页上看到。如果您需要多次(多人)签名,您必须重新加载保存的文件。您好@tilmahauser我希望视觉外观由一个人以pdf格式显示在所有页面中您是否尝试过在测试
testCreateSignatureWithMultipleVisualizations
的底部使用帮助器方法
addSignatureField
?这个答案是在PDFBox在2.0.12版本时创建的,所以它很可能对您有用;同时,有几种策略(ISO 32000-2)被认为是无效的,而剩下的一种策略也不是无效的,很可能只是由于疏忽,请参见A节,讨论您的上述实际任务。您好@mkl耶,我已经看到了,但没有尝试,因为我正在使用ExternalSigningSupport,因为签名来自不同的服务器。流程就像--我准备PDF,然后生成散列并发送到服务器,服务器将发送回签名,我使用ExternalSigningSupport将该签名添加到PDF中。您只签名一次,这将对整个PDF进行签名,即使签名只能在一页上看到。如果您需要多次(多人)签名,您必须重新加载保存的文件。您好@tilmahauser我希望视觉外观由一个人以pdf格式显示在所有页面中您是否尝试过在测试
testCreateSignatureWithMultipleVisualizations
的底部使用帮助器方法
addSignatureField
?这个答案是在PDFBox在2.0.12版本时创建的,所以它很可能对您有用;同时,有几种策略(ISO 32000-2)被认为是无效的,而剩下的一种策略也不是无效的,很可能只是由于疏忽,请参见A节,讨论您的上述实际任务。您好@mkl耶,我已经看到了,但没有尝试,因为我正在使用ExternalSigningSupport,因为签名来自不同的服务器。流程就像--我准备PDF,然后生成散列并发送到服务器,服务器将发送回签名,我使用ExternalSigningSupport将签名添加到PDF中。
String pkcs7Response = responseSignature;
byte[] sigbytes = java.util.Base64.getDecoder().decode(pkcs7Response);                   
externalSigning.setSignature(sigbytes);
pddoc.save(fos);
pddoc.close();