Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi PDFium Firemonkey writeprotected (https://www.delphipraxis.net/210711-pdfium-firemonkey-writeprotected.html)

Starsky911 31. Mai 2022 07:29

PDFium Firemonkey writeprotected
 
Für das ausfüllen von PDF Formularen nutze ich die Komponente PDFium/Firemonkey von Winsoft.sk.
Das funktioniert auch aber ich finde keine Möglichkeit die ausgefüllten Formulare geschützt zu speichern
sodass im Nachhinein keine Änderungen mehr vorgenommen werden können.
Hat da vielleicht einer eine Idee?
Funktionieren müsste das auf iOS und Android.

Vielen Dank im Voraus.
Starsky

TurboMagic 31. Mai 2022 12:25

AW: PDFium Firemonkey writeprotected
 
Schon mal den AUtor dieser Bibliothek dazu gefragt?

ULIK 31. Mai 2022 12:52

AW: PDFium Firemonkey writeprotected
 
Du mußt vor dem Speichern die Rechte des PDFs ändern, so daß keine Formularbehandlung mehr zulässig ist. Dazu mußt du auf alle Fälle eine Verschlüsselung auswählen und das Ownerpassword setzen (wenn nicht bereits eh geschehen), dazu dann den entsprechenden Eintrag für das P-Flag des Encryption dictionary.
Such Dich mal durch die Security-Funktionen von PDFium durch, ausgehend von GetEncryptDictionary.

Ich hab selbst mit PDFium noch nicht gearbeitet, aber ich denke, die nötigen Funktionalitäten sollten dafür schon enthalten sein. Nur ein Rat: teste das Ergebnis auf alle Fälle mit verschiedenen PDF Viewern. Nicht alle interpretieren das P-Flag immer gleich (zumal die PDF-Spec da auch nicht immer ganz eindeutig ist).

Starsky911 31. Mai 2022 13:10

AW: PDFium Firemonkey writeprotected
 
Zitat:

Schon mal den AUtor dieser Bibliothek dazu gefragt?
Frage an Winsoft.sk:
Is it possible to load a pdf with form elements, have it filled out by the user and then save it as write-protected?

Antwort von Winsoft.sk:
AIK the PDFium library (used by our PDFium components) can't add write protection to the PDF.
Try to use PDF preset as write protected, maybe save will use this security flag.

Zitat:

Du mußt vor dem Speichern die Rechte des PDFs ändern, so daß keine Formularbehandlung mehr zulässig ist. Dazu mußt du auf alle Fälle eine Verschlüsselung auswählen und das Ownerpassword setzen (wenn nicht bereits eh geschehen), dazu dann den entsprechenden Eintrag für das P-Flag des Encryption dictionary.
Such Dich mal durch die Security-Funktionen von PDFium durch, ausgehend von GetEncryptDictionary.

Ich hab selbst mit PDFium noch nicht gearbeitet, aber ich denke, die nötigen Funktionalitäten sollten dafür schon enthalten sein. Nur ein Rat: teste das Ergebnis auf alle Fälle mit verschiedenen PDF Viewern. Nicht alle interpretieren das P-Flag immer gleich (zumal die PDF-Spec da auch nicht immer ganz eindeutig ist).
In der Doku finde ich leider nichts bzgl. Encryption!
Gibt es evtl. eine andere Crossplatform Bibliothek die das leistet?

ULIK 31. Mai 2022 15:59

AW: PDFium Firemonkey writeprotected
 
Vieleicht kannst Du einen anderen Weg gehen: gibt es im PDFium Funktionen zum Flatten von FormFields (eventuell etwas wie Page_Flatten oder Form.Flatten oder so)? Wenn ja, dann könntest Du vor dem Speichern die Eingaben flatten, das sollte den bestehenden Inhalt dann auch fixieren.
Mußt Du aber mal testen.

Starsky911 31. Mai 2022 20:10

AW: PDFium Firemonkey writeprotected
 
Hallo ULIK,
Super, vielen Dank für den Hinweis.
Besser als der Support von Winsoft.sk.:-D
Damit funktioniert es:
Code:
FPDFPage_Flatten(FPdfView.Page,FLAT_NORMALDISPLAY);

ULIK 31. Mai 2022 21:03

AW: PDFium Firemonkey writeprotected
 
Sehr gut. Schau dir aber mal an, was die Funktion genau macht, ich dachte, ich hätte was gelesen, daß damit auch die PDF Kommentare eingebrannt werden. Falls du so was in dem PDF verwendest. Nicht, daß da zuviel fixiert wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz