Rechnen im PDF-Formular (LibreOffice - Master PDF Editor)

HowTos, komplexe Anleitungen und nützliche Dokumente

Moderator: Moderatoren

Forumsregeln
Hier bitte komplexere Anleitungen allgemeinem Interesses posten, sowie wichtige Dokumente zum Download.
Bitte hier (möglichst) keine Diskussionen führen. Für Fragen und Hinweise ein neues Thema im entsprechenden Unterforum eröffnen.
Antworten
Benutzeravatar
miesepeter
********
Beiträge: 2097
Registriert: Sa, 10.05.2008 15:05
Wohnort: Bayern

Rechnen im PDF-Formular (LibreOffice - Master PDF Editor)

Beitrag von miesepeter »

Stichworte: PDF; Berechnungen im PDF; PDF-Formular; rechnen im PDF, Master PDF Editor

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:
Formular_LibreOffice.odt
(16.83 KiB) 88-mal heruntergeladen
 
Diese Datei wird (Menü Datei | Exportieren | ... PDF-Formular) nach PDF exportiert...
Formular_LibreOffice.pdf
(28.34 KiB) 91-mal heruntergeladen
 
... 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.
 
01_Zahlenformat.png
01_Zahlenformat.png (40.09 KiB) 1381 mal betrachtet
 
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.)
 
04_FormatCode_Vorgabe0.png
04_FormatCode_Vorgabe0.png (18.92 KiB) 1381 mal betrachtet
 
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;
Screenshots dazu:
 
02_CodeSnippet_StdSum.png
02_CodeSnippet_StdSum.png (14.78 KiB) 1381 mal betrachtet
 
03_CodeSnippet_Auszahl.png
03_CodeSnippet_Auszahl.png (10.06 KiB) 1381 mal betrachtet
 
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:
 
Formular_MasterPDF.pdf
(295.89 KiB) 89-mal heruntergeladen
 
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
 
05_Formular_MasterPDF_MitBerechnungsbeispiel.png
05_Formular_MasterPDF_MitBerechnungsbeispiel.png (20 KiB) 1369 mal betrachtet
 
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
Antworten