Verwendete Versionen:
LibreOffice: Version: 7.5.2.2 (X86_64) / OS: Windows 10.0
Master PDF Editor: Build 5.9.40, 64-Bit / OS: Windows 10.0
Hinweis: Für Linux gibt es den Master PDF Editor Version 4, der keine Wasserzeichen beim Einbau von JavaScript-Code erzeugt.
Hinweis auf verwandtes Thema:
Rechnen im PDF-Formular (LibreOffice - Scribus)
LibreOffice-Formular als Vorlage für PDF-Formular mit Berechnungen
Es wird als bekannt vorausgesetzt, dass (Writer-) Formulare beim Export nach PDF keine Berechnungen "mitnehmen", sondern Formularfelder (hier: Textfelder) lediglich für das Ausfüllen mit Inhalten (Texte; Zahlen) geeignet sind.
Trotzdem ist LibreOffice-Writer eine sehr gute Grundlage für PDFs mit Berechnungen, weil hier eine sehr schnelle Layoutmöglichkeit gegeben ist (z.B. Tabellen als Strukturelemente; Schrift problemlos platzierbar innerhalb eines Konzepts).
Für Berechnungen in PDF-Formularen werden üblicherweise JavaScript-Code-Snippets verwendet, die mit geeigneten Programmen beim Editieren von gegebenen PDF-Formularen hinzugefügt werden. Neben dem bekannten Scribus eignet sich hierfür auch der Master PDF Editor (hier: Testversion mit Wasserzeichen).
1. PDF-Formular mit LibreOffice generieren
siehe hierzu Beispieldatei:
Diese Datei wird (Menü Datei | Exportieren | ... PDF-Formular) nach PDF exportiert...
... und dann mit Master PDF Editor weiterverarbeitet.
2. PDF-Formular mit Master PDF Editor bearbeiten
Da die Textfelder richtig formatiert werden müssen, wird ein Textfeld (Montag) als Muster genommen und entsprechend oft kopiert.
Um Fehlfunktionen zu vermeiden müssen die Textfelder bereits im Vorhinein mit einer Zahl (hier: 0) gefüllt werden. (Dies ist wohl spezifisch beim Master PDF Editor im Vergleich zu Scribus; Scribus erzeugt jedoch PDF-Formulare mit einem ungleich höheren Speicherbedarf.)
Das Währungsformat kann bei entsprechenden Textfeldern hinzugefügt werden.
3. JavaScript-Code-Snippets hinzufügen
Da JavaScript auch wieder "eine Welt für sich" ist, benutzte ich als Code lediglich die Eigenschaft value (Wert) der Textfelder und die bekannten Rechenzeichen (siehe z.B. Calc).
Die Berechnungen werden hier im Codeblock in der verwendeten Reihenfolge gezeigt:
Code: Alles auswählen
---------- 1. Code-Snippet
this.getField("StdSum").value = this.getField("Mon").value+ this.getField("Die").value+ this.getField("Mit").value+ this.getField("Don").value+ this.getField("Fre").value+ this.getField("Sam").value+ this.getField("Son").value;
---------- 2. Code-Snippet
this.getField("Auszahl").value=this.getField("StdSum").value*this.getField("StdLohn").value;
4. Berechnungen im PDF-Formular durchführen
Man kann jetzt Zahlen eingeben und die Summe (Stundenanzahl) und das Produkt (Auszahlung) berechnen lassen; falls beim Adobe-Reader die Anwendung von JavaScript aktiviert ist, sollte das auch funktionieren. Man kann die berechneten Zahlen in einer neuen PDF-Datei abspeichern (sie bleiben dann erhalten) und das Formular bei Bedarf weiterleiten/versenden.
Anbei das mit Master PDF Editor erzeugte Dokument:
5. Einschränkungen
Es ist klar, dass die Anwendung von JavaScript-Code ein gewisses Sicherheitsrisiko darstellt. Daher kann man beim Adobe-Reader auch diese Funktion deaktivieren. Es gibt einige PDF-Viewer, die dieses "Feature" von vorneherein schon gar nicht eingebaut haben (z.B. Sumatra; Evince). Manche Firmen (oder auch Einzelpersonen) bevorzugen daher PDF-Viewer ohne JavaScript-Funktionen.
6. Rechenbeispiel
7. Nützliche Links
https://code-industry.net/masterpdfeditor-help/ (offizielle Hilfeseiten in Englisch)
JavaScript:
https://www.w3schools.com/js/js_variables.asp
https://falconbyte.net/javascript-variablen.php