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

时间:2013-05-23 09:37:44

标签: java pdf itext digital-signature

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

2 个答案:

答案 0 :(得分:10)

要将Joeri的答案放入上下文中,请查看Adobe技术白皮书Adobe Acrobat 9 Digital Signatures, Changes and Improvements,尤其是“允许和禁止更改”部分。这里Adobe 阐明了允许的更改(如Acrobat 9及更高版本所示)可以对经过认证或签名的文档进行,而不会使应用于文档的签名无效。

  

对认证文件允许的操作

     

经过认证,不允许更改

     
      
  • 允许      
        
    • 不允许更改
    •   
  •   
  • 不允许的      
        
    • 数字签名
    •   
    • 提供表单字段值
    •   
    • 添加或编辑注释
    •   
    • 添加表单字段
    •   
    • 更改页面内容
    •   
  •   
     

通过表格填写和数字签名认证

     
      
  • 允许      
        
    • 提供表单字段值
    •   
    • 数字签名
    •   
  •   
  • 不允许的      
        
    • 添加或编辑注释
    •   
    • 添加表单字段
    •   
    • 更改页面内容
    •   
  •   
     

通过注释,表单填写和数字签名认证,

     
      
  • 允许      
        
    • 添加或编辑注释
    •   
    • 提供表单字段值
    •   
    • 数字签名
    •   
  •   
  • 不允许的      
        
    • 添加表单字段
    •   
    • 更改页面内容
    •   
  •   
     

已签名但未经证明的文件的允许操作

     
      
  • 允许      
        
    • 添加签名字段(请参阅将签名字段添加到已签名但未经证明的文档的限制
    •   
    • 添加或编辑注释
    •   
    • 提供表单字段值
    •   
    • 数字签名
    •   
  •   
  • 不允许的      
        
    • 添加签名字段以外的表单字段
    •   
    • 更改页面内容
    •   
  •   

如您所见,“更改网页内容”始终位于“不允许”类别中。由于添加页面会更改页面内容 - 之后至少会出现一个以前没有任何内容的白页 - 这是不允许的。

(尽管这里没有明确提到,但只要允许表单填写符合PDF标准,很可能也允许实例化页面模板,参见ISO 32000-1第12.8.2.2.2节。但是使用这样的页面模板至少需要在签名之前专门准备文档,而你的问题听起来就像文件已经签署而没有任何这样的准备......)

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

答案 1 :(得分:2)

是的,它会。签名基于签名的内容,因此如果您更改内容,签名将不再有效。

如果您是签名者,则可以再次签署文件。

您添加的页面是否为空白无关紧要。