2017-08-02 118 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