文本多个签名



我必须签署带有多个签名的pdf。这不是同时完成的。所以 A 在文件上签名,2 天后,B 在文件上签名,依此类推......

如Manning iText in Action和以下在Web上找到的代码示例中所述,要在已包含签名的文档上添加签名,我只需在创建签名时添加两个参数:

stamper = PdfStamper.createSignature(this.pdfReader,
                    workingBaos, PdfWriter.VERSION_1_7, null, true);

null 是因为我不想使用临时文件,而 true 则使用追加模式并创建新的修订版。

问题是,当我打开pdf时,Acrobat Reader说只有最后一个签名是有效的。以前的签名都是无效的。当我使用 iText 验证 pdf 时,没有问题。

我错过了什么吗?

我是你所指的书的作者。IMO 书中关于数字签名的部分太短了,但出版商希望将页数保持在 500 页以下(我设法说服他再添加大约 100 页)。

如果要添加多个签名,请阅读此白皮书:http://itextpdf.com/book/digitalsignatures本白皮书仍在编写中,但您已经在有关"在工作流中签署文档"的章节中找到所需的代码。

为了完整起见:如果添加其他签名,则应在追加模式下创建PdfStamper实例。

更新:当您说iText验证PDF时,您可能意味着iText告诉您第二个签名是有效的。我不认为iText可以看到初始签名。如果是这样,请告诉我,我会调查的。

要为已有签名的文档进行签名,您需要使用:

PdfSigner signer = new PdfSigner(reader, new FileStream(dest, FileMode.Create), tmp,
                new StampingProperties().UseAppendMode());

设置:使用追加模式

检查认证级别:

  • NOT_CERTIFIED— 创建普通签名(又名审批或收件人签名)。可以对文档进行签名,以便由一个或多个收件人审批。

  • CERTIFIED_NO_CHANGES_ALLOWED— 创建认证签名(又名作者签名)。应用签名后,不允许对文档进行任何更改。

  • CERTIFIED_FORM_FILLING— 为文档作者创建认证签名。其他人仍然可以填写表单字段或添加审批签名,而不会使签名失效。

  • CERTIFIED_FORM_FILLING_AND_ANNOTATIONS— 创建认证签名。其他人仍然可以填写表单字段,或添加审批签名和注释,而不会使签名无效。

请参阅 PDF 的数字签名

尝试:

PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
...
appearance.setCertificationLevel(PdfSignatureAppearance.NOT_CERTIFIED);
...

最新更新