如何在不使用PDFBOX使第一个签名无效的情况下为已签名的PDF添加叠加层?

时间:2018-03-14 19:32:35

标签: java pdf digital-signature pdfbox

我正在尝试将叠加(我认为是不允许的更改)添加到已签名的PDF(可见的分离签名),然后再次签署此PDF。这导致第一个签名无效。但是,第二个签名仍然有效。

第二次签名后是否可以让两个签名都有效?

我正在使用PDFBOX v2.0.8

附加样本pdf here

  1. 原始PDF
  2. 从第1步开始对PDF进行数字签名
  3. 覆盖第2步中的数字签名PDF
  4. 对从步骤3生成的PDF进行数字签名
  5. 谢谢, ABHI

1 个答案:

答案 0 :(得分:1)

事实证明,主要问题不在于是否允许在第一次签名后应用更改,问题是这些更改是使用正常保存添加到文件中的。

这种普通保存可以完全改变PDF文件存储在PDF文件中的顺序。因此,这样的正常保存会使第一个签名无法修复,因为其所谓的带符号字节范围已经改变,签名值也不再位于这些范围之间的间隙中。

因此,无论您对签名文档进行哪些更改,请确保将其存储为增量更新!

尽管如此,很难将PDFBox增量更新机制用于除设计之外的任何其他内容,即除了添加其他签名之外的其他任何内容。您必须将您更改的低级对象(包括文档目录中的对象链)标记为它们,因此您必须特别了解您的更改在非常低级别上的实现方式。此外,这种机制通常要求您将实际更改的对象保存到“目录链”标准。