2017-08-02 119 views
0

我正在以编程方式签署PDF。PDF未知签名图标

... // ORIGINAL FILE 

trailer 
<< 
/Size 11 
/Root 1 0 R 
/Info 10 0 R 
>> 

startxref 
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 

... 

11 0 obj 
<</Type /Annot /SubType /Widget /Rect [0 0 0 0 ] /P 4 0 R /F 4 /FT /Sig /T (Signature) /Ff 0 /V <</Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached /ByteRange [0 3729 15473 422     ] /Contents <308209...> 
/M (D:20170801165520+02'00') >> >> 
endobj 

... 

trailer 
<</Size 15 /Root 1 0 R /Info 10 0 R /Prev 2714 >> 
startxref 
15609 
%%EOF 
1 0 obj 
<</Type /Catalog /Outlines 2 0 R /Pages 3 0 R /AcroForm <</Fields [15 0 R ] /SigFlags 3 >> /Names 14 0 R >> 
endobj 

... 

15 0 obj 
<</Type /Annot /SubType /Widget /Rect [0 0 0 0 ] /P 4 0 R /F 4 /FT /Sig /T (Signature) /Ff 0 /V <</Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached /ByteRange [0 16632 28376 387     ] /Contents <3082062...> 
/M (D:20170802094848+02'00') >> >> 
endobj 
16 0 obj 

... 

<</Size 18 /Root 1 0 R /Info 10 0 R /Prev 15609 >> 
startxref 
28476 
%%EOF 
:每一个新的签名是在我加入签名dictionnary的EOF%后,我更新这样的AcroForm(对不起,我在工作,所以我不能上传PDF)增量方式增加

也许问题是我有多个对象具有相同的ID,并且我的最后一个AcroForm只引用最后一个签名?我希望能够多次签署一个文件,但我遇到了问题。第一个签名是好的,显示这面旗帜:

enter image description here

然后我尝试登录同一个文件的另一个时间,另一个证明,这给我这个垃圾桶旁边图标即可签名,并表示它被删除你可以在这里看到:

enter image description here

我使用Zend_PDF来解析该文件并添加签名。

编辑:感谢@mkl 2个签名现在可以被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 

... 

而且我有这个奇怪的错误,因为我并没有修改有关BYTERANGE和我的手,他们是正确的验证什么。是关于我的新修改吗?

enter image description here

+0

关于编辑:如您在屏幕截图中看到的,*签名字节范围无效*。检查他们!只要您不以二进制形式分享有问题的PDF,我们无法帮助您。 – mkl

回答

1

同时加入了第一个签名您设置的AcroForm字典

/AcroForm <</Fields [11 0 R ] /SigFlags 3 >> 

对于第二个,你把它设置为

/AcroForm <</Fields [15 0 R ] /SigFlags 3 >> 

即您从中删除了11 0 R并添加了15 0 R。因此,您确实从删除了表单结构中的第一个签名字段。

而应该只添加了新的签名字段:

/AcroForm <</Fields [11 0 R 15 0 R ] /SigFlags 3 >> 

此外,无论您的签名字段具有相同的名称

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

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

+0

感谢您的快速回答!我使用您提供的信息更新了我的流程,并更新了我的问题,因为我面临一个新问题。 – Shashimee

+0

*更新了我的问题,因为我面临一个新问题* - 只要原始问题得到适当的回答,通常会认为问题已经完成,接受答案,并为新问题提出一个新问题。 – mkl

+0

因为我要提供相同的代码,你能告诉我(如果你知道)错误是否来自新的更新?如果人们连续有两个相同的错误,它可能是同一个答案的一部分。 – Shashimee