2017-08-02 26 views
0

プログラムで署名しています。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 
:すべての新しい署名は(申し訳ありませんが、私は仕事でだので、私はPDFをアップロードすることはできません)私は%のEOFの後に署名dictionnaryを追加し、私はこのようなAcroFormを更新増分方法で追加されます

多分、同じIDを持つ複数のオブジェクトがあり、最後のAcroFormは最後の署名のみを参照しているということでしょうか? 1つのファイルに複数回署名することができますが、問題があります。最初の署名は大丈夫ですし、このバナーが表示さ:

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 

... 

そして、私は彼らが正しい手によって検証バイトレンジと私については何も変更しなかったので、私はこの驚くべきエラーを持っています。私の新しい変更についてですか?

enter image description here

+0

編集について:あなたのスクリーンショットに見られるように、*署名のバイト範囲は無効*です。それらをチェック!問題のPDFをバイナリ形式で共有しない限り、私たちはそれを手助けすることはできません。 – mkl

答えて

1

あなたは1秒間

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

AcroForm辞書を設定された第1の署名を追加する際に、あなたは

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

すなわちに設定そこから11 0 Rを削除し、15 0 Rを追加しました。したがって、あなたは確かにフォーム構造からの最初の署名フィールドを削除しました。

あなたが代わりにのみ、新しい署名フィールドを追加しておく必要があります両方のあなたの署名フィールドが同じ名前明らか

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

を持って、さらに

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

を、別のフォームフィールドには、異なる名前を持っている必要があります。

+0

クイックアンサーに感謝します!あなたが私に与えた情報で私のプロセスを更新し、新しい問題に直面しているので質問を更新しました。 – Shashimee

+0

*私は新しい問題に直面しているので、私の質問を更新しました* - 元の質問に適切に答えるとすぐ、質問は終了したとみなし、回答を受け入れ、新しい問題について新しい質問をします。 – mkl

+0

私は同じコードを提供しているので、もしあなたが知っていれば、新しいアップデートからのエラーかどうか教えていただけますか?同じ2つのエラーが連続している人は、同じ回答に含まれる可能性があります。 – Shashimee