Dokument PDF podpisany programowo nie otrzymuje zielonego znacznika wyboru po podpisaniu za pomocą programu Acrobat Reader
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:
- Signature 1 z programem Acrobat => ok
- Podpis 2 z moją aplikacją => poprzednie podpisy są nieprawidłowe, ale to jest w porządku
- Podpis 3 z Acrobat => podpis 1 jest nieprawidłowy, ale 2 i 3 są w porządku
- 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
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 .