PDF未知签名图标

PDF未知签名图标,pdf,zend-framework,digital-signature,Pdf,Zend Framework,Digital Signature,我正在以编程方式签署PDF。每一个新签名都是以增量方式添加的,我在%EOF之后添加了签名字串,并且我更新了AcroForm,如下所示(对不起,我正在工作,因此无法上载PDF): ..//原始文件 拖车 > 起始外部参照 2714 %%EOF 10 obj endobj ... 110 obj endobj ... 拖车 起始外部参照 15609 %%EOF 10 obj endobj ... 15 0 obj endobj 16 0 obj ... 起始外部参照 28476 %%EOF 也许问

我正在以编程方式签署PDF。每一个新签名都是以增量方式添加的,我在%EOF之后添加了签名字串,并且我更新了AcroForm,如下所示(对不起,我正在工作,因此无法上载PDF):

..//原始文件
拖车
>
起始外部参照
2714
%%EOF
10 obj
endobj
...
110 obj
endobj
...
拖车
起始外部参照
15609
%%EOF
10 obj
endobj
...
15 0 obj
endobj
16 0 obj
...
起始外部参照
28476
%%EOF
也许问题在于我有多个具有相同ID的对象,而我的最后一个AcroForm只引用了最后一个签名?我想能够签署一个文件多次,但我有一个问题。第一次签名没有问题,并显示此横幅:

然后我尝试再次使用另一个证书对同一个文件进行签名,这给了我签名旁边的垃圾桶图标,并表示它已被删除,如您在此处所见:

我正在使用Zend_PDF解析文件并添加签名

编辑:多亏了@mkl,Adobe Reader现在可以识别这两个签名。我的AcroForms现在如下所示:

2714
%%EOF
1 0 obj 
<</Type /Catalog /Outlines 2 0 R /Pages 3 0 R /AcroForm <</Fields [11 0 R ] /SigFlags 3 >> /Names 14 0 R >>
endobj

... 

15610
%%EOF
1 0 obj 
<</Type /Catalog /Outlines 2 0 R /Pages 3 0 R /AcroForm <</Fields [11 0 R 15 0 R ] /SigFlags 3 >> /Names 14 0 R >>
endobj

...
2714
%%EOF
10 obj
endobj
... 
15610
%%EOF
10 obj
endobj
...
我有一个令人惊讶的错误,因为我没有修改任何关于ByteRange的内容,我用手验证了它们是正确的。是关于我的新修改吗


在添加第一个签名时,您将AcroForm字典设置为

/AcroForm <</Fields [11 0 R ] /SigFlags 3 >> 
此外,您的两个签名字段具有相同的名称

11 0 obj 
<<
    ...
    /T (Signature) 
    ...
>>
endobj
...
15 0 obj 
<<
    ...
    /T (Signature)
    ...
>>
endobj
110对象
>
endobj
...
15 0 obj
>
endobj

显然,不同的表单字段必须有不同的名称。

谢谢您的快速回答!我使用您提供的信息更新了我的流程,并更新了我的问题,因为我面临新问题。更新了我的问题,因为我面临新问题-一旦原始问题得到适当回答,通常会认为问题已完成,接受答案,由于我将提供相同的代码,您能否告诉我(如果您知道)错误是否来自新的更新?如果人们连续犯相同的两个错误,这可能是同一答案的一部分。@Shashimee“你能告诉我(如果你知道的话)…”很遗憾,我说不出来。您只提供了PDF的一小部分摘录,但最多(在前一个问题中)是一个完整的文本形式,这使得它无法用于签名相关分析。幸运的是,对于这个问题,您选择了我的答案所需的确切摘录。要分析新问题,我需要以二进制形式传输一个样本。我明白了,谢谢你的回答,你帮了我很多忙!:)我将写一个关于编辑的新问题:正如你在截图中看到的,签名字节范围无效。检查他们!只要您不以二进制形式共享有问题的PDF,我们就无法为您提供帮助。
/AcroForm <</Fields [15 0 R ] /SigFlags 3 >>
/AcroForm <</Fields [11 0 R 15 0 R ] /SigFlags 3 >>
11 0 obj 
<<
    ...
    /T (Signature) 
    ...
>>
endobj
...
15 0 obj 
<<
    ...
    /T (Signature)
    ...
>>
endobj