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

如何添加覆盖到已签名的PDF而不使使用PDFbox的第一个签名无效?

曹经业
2023-03-14

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

有没有可能两个签名都在二次签名后有效?

我正在使用PDFBOX v2.0.8

此处附上pdf示例

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

谢谢,阿比

共有1个答案

钱星华
2023-03-14

结果表明,主要问题不是是否允许在第一个签名之后应用的更改,而是使用正常保存将这些更改添加到文件中。

这样的正常保存可以完全改变PDF对象存储在PDF文件中的顺序。因此,这样的正常保存会损坏无法修复的第一个签名,因为其声称的签名字节范围已经改变,并且签名值也不再位于这些范围之间的间隙中。

因此,无论对签名文档应用哪种更改,都要确保将它们存储为增量更新!

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

 类似资料:
  • 我对iTextSharp有意见。我有一个带有表单字段的文档,并且我已经为签名生成了字段。当第一个人在文件上签字时,它就会正常工作。Adobe Reader显示有效签名。当我让第二个人在文档上签名时,Adobe Reader显示签名1现在是“未知签名”,签名无效。Adobe reader显示: 此签名中包含的格式或信息有错误(支持信息:SigDict/Contents非法数据)

  • 然后我用adobe签名并通过以下方式传递: 我真的不明白为什么这不起作用。任何帮助都会很好! 编辑: 按照建议,我已经将添加的注释、页面和注释列表的NeedToBeUpdated标志设置为true(希望最后一个操作正确): 注释仍然没有保存,所以我显然遗漏了一些东西。 编辑3: 但是,当我在adobe Reader中打开文档时,它不会出现。也许这与外观流的关系更大,而不是注释本身?

  • 我想问一个问题,如果我想在多页pdf中添加数字签名,每页都有相同的印章,我是否可以在第一页只添加一次数字签名,然后其他页面只需要引用第一个印章的外观。因为使用这种方法可以减少添加邮票的时间。 我使用了mkl给出的代码,但我有一个问题。我用其他代码替换了以下代码。 原件: 现在: 原始代码在加盖印花时有效,但修改后的代码将使印花无效。我使用Adobe Acrobat Pro DC打开已签名的文档。此

  • 我正在尝试使用pdfbox库签署pdf。我现在卡住了,真的需要帮助。 这是我的代码: 然后我正在保存我的pdf,但是:1)我注意到sign method从来没有被调用2)我应该在哪里附加CertyFicate?在sign method中? 以下是我保存PDF的方法:

  • 问题内容: 我正在尝试学习使用Apache的pdfBox处理经过数字签名的文档。在测试期间,我创建了一个完全空白的pdf文档。 然后,我使用带有证书的签名功能通过Adobe Reader对该文档进行了签名。 我尝试使用pdfBox打开,保存和关闭签名文件,没有进行任何修改。但是,一旦我在Adobe中打开文件,这些文件将不再有效。 Adobe告诉我:“此签名中包含的格式或信息有错误(支持信息:Sig

  • 问题内容: 我想使用Bouncycastle生成一个简单的CMS签名。此代码有效! 但是,如何添加签名属性? 我想删除默认的签名属性并添加signature-policy-identifier。 文章非常受欢迎。 问题答案: 首先,您似乎正在使用最新版本的Bouncy Castle中不推荐使用的构造。要添加经过身份验证/签名的属性,您必须将它们打包到AttributeTable中,将签名的属性添加