Dokument PDF podpisany programowo nie otrzymuje zielonego znacznika wyboru po podpisaniu za pomocą programu Acrobat Reader

Nov 24 2020

Napisałem aplikację do podpisywania dokumentów PDF i teraz mogę podpisać każdy niepodpisany dokument PDF, a Adobe Reader pokazuje zielony znacznik wyboru. Ponadto mogę podpisać plik z wieloma podpisami i wyniki są w porządku.

Ale jeśli spróbuję podpisać dokument za pomocą programu Adobe Reader, kiedy podpiszę go ponownie, w rezultacie żaden podpis przed ostatnim nie zostanie oznaczony zielonym znacznikiem wyboru, ponieważ program Acrobat uważa, że ​​dokument się zmienił. Następnie, jeśli podpiszę dokument ponownie za pomocą programu Adobe Reader i mojej aplikacji, kolejne podpisy ponownie otrzymają zielone znaki. Problem pojawia się przy pierwszym podpisie Adobe , ale nie mogę znaleźć przyczyny.

Przepływ pracy:

  1. Signature 1 z programem Acrobat => ok
  2. Podpis 2 z moją aplikacją => poprzednie podpisy są nieprawidłowe, ale to jest w porządku
  3. Podpis 3 z Acrobat => podpis 1 jest nieprawidłowy, ale 2 i 3 są w porządku
  4. Podpis 4 z moją aplikacją => podpis 1 jest nieprawidłowy, ale 2, 3 i 4 są w porządku

Czy mógłbyś mi pomóc zidentyfikować i naprawić problem?

Z góry dziękuję.

Pliki:

  • oryginalny plik
  • plik podpisany przeze mnie (dostaje zielony znacznik wyboru)
  • plik podpisany przez acrobata (jest poprawny).
  • plik ponownie podpisany przez program acrobat (jest poprawny)
  • plik podpisany przez program acrobat i me (nie można uzyskać zielonego znacznika wyboru dla podpisanej części programu Adobe)

Odpowiedzi

2 mkl Nov 24 2020 at 23:30

Zmień domyślny wpis wyglądu DA w słowniku AcroForm .

W dokumencie podpisanym przez Adobe słownik AcroForm wygląda następująco:

<</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>>

Po podpisaniu tego dokumentu stanie się to:

<</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>>

To znaczy usunąłeś końcowy znak spacji we wpisie DA .