JAVA - 如何使用原始PDF和单独的PKCS#7签名数据创建签名PDF

use*_*721 2 java pdf digital-signature pkcs#7

我有一个原始的PDF文档和单独的文件作为PKCS#7签名数据.我想将这些组合起来创建签名的PDF文档,以便它可以在Adobe读者中显示它已签名并签署了该文档.

Java中是否有可用于以编程方式创建此类签名PDF文档的库?我需要加载该PDF并以某种方式添加签名,然后将其另存为新的PDF文档.

示例代码将不胜感激.

编辑:

生成的代码应将PDF文档作为输入参数并执行以下操作:

  1. 准备要签名的数据
  2. 提供要签署到生成PKCS#7签名数据文件的外部签名机制的数据
  3. 提供PKCS#7签名数据文件
  4. 将签名数据添加到PDF文档
  5. 保存PDF文档

据我所知,第一步很重要,因为没有它,PKCS#7签名数据将是错误的.

Egl*_*Egl 5

如果我正确理解了您的问题,那么您的pkcs#7正在签署PDF的全部内容.也就是说,所有PDF文件字节.在这种情况下,答案是你不能.

签署PDF文件时,不要"按原样"签署所有字节.在签署PDF之前,您必须在PDF中创建两个"字节范围",在PDF的中间留下足够的空间来包含签名.然后,您必须连接这两个字节范围,对这些字节进行签名,并在PDF中留下的空间中包含签名.

请查看
*https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf(www.adobe.com)