当前位置: 首页 > 知识库问答 >
问题:

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

田翰林
2023-03-14

如何修复“定义签名数据范围的意外字节范围值”。详细信息:使用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();

签名验证时出错。

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

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

共有1个答案

景辰钊
2023-03-14

同样的问题...意外的字节范围值定义签名数据的范围...

使用foxit...

右键单击签名...然后单击显示签名版本...

您将获得您的签名版本并将其保存。。

 类似资料:
  • 问题 你想定义一个数组的范围。 解决方案 在 CoffeeScript 中,有两种方式定义数组元素的范围。 myArray = [1..10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] myArray = [1...10] # => [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] 要想反转元素的范围,则可以写成下面这样。 myLargeArray =

  • 我正试图使用我们正在制作的库来制作PDF文档的时间戳。我在PDF文档中添加了一个新的部分。我为签名和包含实际签名的签名对象添加了新的注释对象,并为新部分添加了新的外部参照表。当我检查外部参照条目时,一切似乎都正常。 当我尝试在Acrobat中验证我的签名时,我收到以下错误消息“此签名中包含的信息格式存在错误(签名字节范围无效)”。 但是,当我检查字节范围时,一切似乎都是正确的。我从文档的开头到Co

  • 对于我的Java类,我正在编写一个小程序,首先选择一个介于1和100之间的数字。然后,它会提示用户开始猜测正确的。如果用户对的猜测过高或过低,程序会打印出一个新范围,供他们在该范围内进行猜测。如果用户输入或,程序只需重新要求用户输入,但不会以任何方式更改范围。 示例输出(当机密号为20时)如下所示: 该项目似乎已经基本完成,但只有一个例外。其中一个要求是,当用户键入的超出我们给定的1和100范围时

  • 我目前正在用下面的代码从Google表单中获取所有值,但是在从那里获取所有值之后,现在如何在另一个表单中设置它们呢? var ss=电子表格应用程序。openById(ID); var值=ss。getDataRange()。getValues(); var ss1=电子表格应用程序。openById(ID1); 我没能做到,有没有办法用for循环做到?

  • 问题内容: 如何指定从(空格)到Unicode字符的范围? 我有一个类似的正则表达式,它不会编译说这是一个错误的范围。我是Unicode正则表达式的新手,所以我以前从未遇到过此问题。 有没有办法使我忘记或尚未学习的编译或正则表达式? 问题答案: unicode范围的语法不会达到您的期望。 原始字符串可防止对转义进行解析,而正则表达式引擎将不执行此操作。此集合中的唯一范围是: in literal

  • 问题内容: 经过数小时令人沮丧的搜索,我觉得我需要在这里提交我的问题。如果此问题以前得到过解答,我事先表示歉意,但是到目前为止,我的搜索都没有帮助。所以这是我的问题: 我的JavaScript代码正在创建一个对象,该对象由AngularJS修改和监视。对于某些事件(例如加载对象的先前设置),我希望从范围之外更改该对象的属性。问题是输入不会改变… 这是我希望如何执行这些更改的示例: HTML代码: