プログラムで署名されたPDFドキュメントは、AcrobatReaderを使用して署名された後に緑色のチェックマークが表示されません

Nov 24 2020

PDFドキュメントに署名するためのアプリケーションを作成しましたが、署名されていないPDFドキュメントに署名できるようになり、AdobeReaderに緑色のチェックマークが表示されます。さらに、複数の署名を使用してファイルに署名することができ、結果は問題ありません。

しかし、Adobe Readerを使用してドキュメントに署名しようとすると、再度署名すると、Acrobatはドキュメントが変更されたと見なすため、最後の署名より前の署名には緑色のチェックマークが付きません。次に、Adobe Readerとアプリケーションを使用してドキュメントに再度署名すると、次の署名に再び緑色のマークが付けられます。問題は最初のAdobe署名で発生しますが、理由がわかりません。

ワークフロー:

  1. Acrobat付きの署名1 => ok
  2. 私のアプリの署名2 =>以前の署名は無効ですが、これは問題ありません
  3. Acrobat =>署名1の署名3は無効ですが、2と3は問題ありません
  4. 私のアプリの署名4 =>署名1は無効ですが、2、3、4は問題ありません

問題を特定して修正するのを手伝っていただけませんか。

前もって感謝します。

ファイル:

  • 元のファイル
  • 私が署名したファイル(緑色のチェックマークが付いています)
  • acrobatによって署名されたファイル(正しい)。
  • acrobatによって再度署名されたファイル(正しい)
  • acrobat a meによって署名されたファイル(Adobeの署名された部分の緑色のチェックマークを取得できません)

回答

2 mkl Nov 24 2020 at 23:30

AcroFormディクショナリDAのデフォルトの外観エントリを変更します。

Adobeによって署名されたドキュメントでは、AcroForm辞書は次のようになります。

<</DA(/Helv 0 Tf 0 g )/DR<</Encoding<</PDFDocEncoding 8 0 R>>/Font<</Helv 6 0 R/MyriadPro-Regular 27 0 R/ZaDb 7 0 R>>>>/Fields[26 0 R]/SigFlags 3>>

その文書に署名すると、次のようになります。

<</DA(/Helv 0 Tf 0 g)/DR<</Encoding<</PDFDocEncoding 8 0 R>>/Font<</Helv 6 0 R/MyriadPro-Regular 27 0 R/ZaDb 7 0 R>>>>/Fields[26 0 R 35 0 R]/SigFlags 3>>

つまり、DAエントリの末尾のスペース文字を削除しました。