java - 如何使用java在数字签名的pdf中添加空白页?

标签 java pdf itext digital-signature

我想使用 itext library 在数字 PDF 的末尾插入空白页。我的困惑是添加页面会使现有签名无效? 谢谢。

最佳答案

要了解 Joeri 的回答,请查看 Adob​​e 技术白皮书 Adobe Acrobat 9 Digital Signatures, Changes and Improvements ,尤其是其“允许和不允许的更改”部分。此处 Adob​​e 阐明了允许的更改(如 Acrobat 9 及更高版本所示)可以对经过认证或签名的文档进行更改,而不会使应用于文档的签名无效。

Allowed actions for certified documents

Certified with no changes allowed

Allowed

  • No changes allowed

Disallowed

  • Digitally signing
  • Supplying form field values
  • Adding or editing annotations
  • Adding form fields
  • Changing page content

Certified with form fill-in and digital signatures allowed

Allowed

  • Supplying form field values
  • Digitally signing

Disallowed

  • Adding or editing annotations
  • Adding form fields
  • Changing page content

Certified with annotations, form fill-in, and digital signatures, allowed

Allowed

  • Adding or editing annotations
  • Supplying form field values
  • Digitally signing

Disallowed

  • Adding form fields
  • Changing page content

Allowed actions for signed but uncertified documents

Allowed

  • Adding signature fields (see Limitations on adding signature fields to signed but uncertified documents)
  • Adding or editing annotations
  • Supplying form field values
  • Digitally signing

Disallowed

  • Adding form fields other than signature fields
  • Changing page content

如您所见,“更改页面内容”始终属于“不允许”类别。由于添加页面会更改页面内容——之后至少会有一个白色页面,而以前什么都没有——这是不允许的。

(即使此处未明确提及,只要允许填写表单,也很可能允许实例化页面模板,因为这符合 PDF 标准,参见 ISO 32000-1 第 12.8.2.2.2 节。但使用此类页面模板至少需要在签名前专门准备文档,而您的问题听起来文档已经在没有任何此类准备的情况下签名...)

PS:显然,即使是这些允许的更改也需要在追加模式(即增量更新)中添加。其他任何东西都会永远破坏签名。对于某些背景,请参阅此 answer .

关于java - 如何使用java在数字签名的pdf中添加空白页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710439/

相关文章:

java - 将时间调整为时区

iphone - 生成适合 iPhone 查看大小的 PDF

parsing - 从 PDF 文件集合中提取表格内容

c# - itext sharp 将 pdf 与 acrofields 合并 - 合并时字段丢失

java - 对象类和数组 - 为什么它返回 'null' ? [java]

java - 在目录中创建一个空文件

java - IntelliJ 结构搜索正则表达式问题

python - 如何使用 mod_wsgi/django/python 生成线程安全的 pdf

android - 在 Android 上使用 iText 生成波斯语和英语 PDF

java - 使用 iText PdfCopy 或 PdfSmartCopy 组合盖章页面会导致无效的 PDF