PDF-Formulare mit Rundungen
Andreas Burkard In der letzten Ausgabe haben wir aufgezeigt, wie man ein Berechnungsformular mit der nötigen Feldlogik für eine Mehrwertsteuerberechnung aufbauen kann. Fixe Beträge kann man dabei über Dropdown-Listen auswählen und diese mit Textfeldern multiplizieren. Weisen die fixen Beträge keine Dezimalbeträge auf, so hat man mit dem momentanen schweizerischen Mehrwertsteuersatz von acht Prozent kaum Probleme mit Rundungen. Doch das Problem der Rundungen drängt sich früher oder später auf. Man möchte schliesslich den Fünfer und das Weggli, Letzteres in Form von gerundeten Zehnern.
Klare Feldbezeichnungen
Ein mit JavaScript erweitertes PDF-Formular sollte stets über klare Feldbezeichnungen verfügen. Vermeiden Sie in den Feldnamen lange Namen, Wortzwischenräume sowie Umlaute.
PDF-Formulare können dann mit der leistungsfähigen Programmiersprache JavaScript erweitert werden. JavaScript ist eine objektorientierte Script-Sprache und erlaubt die dynamische Veränderung von Inhalten und Interaktion.
Runden ist nicht gleich Runden
Bevor wir uns mit dem Rundungsscript befassen, müssen wir uns kurz mit der Rundungsart auseinandersetzen. Hier unterscheidet man hauptsächlich zwischen den mathematischen Rundungen und dem kaufmännischen Runden.
Das mathematische Runden rundet ab, wenn nach der letzten beizubehaltenden Zahl eine 0, 1, 2, 3 oder 4 folgt. Folgt der letzten beizubehaltenden Zahl eine 5, 6, 7, 8 oder 9, so wird aufgerundet.
Vereinfacht ausgedrückt rundet das kaufmännische Runden die 1 und 2 auf null ab, rundet die 3 und 4 auf 5 auf, rundet wiederum die 6 und 7 auf 5 ab und rundet letztlich die 8 und 9 an der ersten wegfallenden Dezimalstelle auf. Das kaufmännische Runden ist für Rundungsdifferenzen bei Währungsbeträgen die ideale Wahl.
Das Script zur Rundung
Um Rundungsdifferenzen zu beheben, kommt beim Textfeld Brutto ein benutzerdefiniertes Berechnungsscript zum Einsatz. Dazu klickt man auf Bearbeiten und kann im JavaScript-Editor das abgebildete Script eingeben.
Im ersten Teil des Scripts wird die kaufmännische Rundung angesprochen. Die Bezeichnung var meint Variable. Eine Variable kann einen Wert aufnehmen.
Im mittleren Teil des Scripts wird eine Übersetzung der Feldbezeichnungen vorgenommen. Das kleine f vor den Feldbezeichnungen steht für New Function, das Ansprechen von Erweiterungen der Script-Sprache. Der Teil this.getField bezeichnet erst das aktuelle PDF-Dokument und gibt anschliessend einen Verweis auf ein Formularfeld, welches in Klammer steht, zurück. Das Script endet mit der Addition der Felder Netto und MwSt.
In JavaScript wird oft die geschweifte Klammer verwendet (Akkolade). Diese Syntax hält Befehle zusammen. Unter Mac OS X öffnet man eine geschweifte Klammer mit Alt-8, Alt-9 schliesst die Klammer. Die Windows-Tastatur beinhaltet die geschweifte Klammer. Diese Zeichen können mit zusätzlich gedrückter AltGr-Taste angesprochen werden.
Die Gross- und Kleinschreibung in der Scriptsprache ist unbedingt zu beachten.
Anderswo gehts einfacher
Microsoft Excel benötigt bloss die einfache Formel vor dem Zellbezug = Runden(...*20;0)/20.
Klar, JavaScript ist breiter und leistungsfähiger. Dennoch ist in Acrobat eine Vereinfachung dieser oft benötigten Rundungsdifferenz überfällig. Dies kann in Form einer Auswahl der Rundungsmethode mit den betroffenen Feldbezeichnungen sein. Der Eindruck festigt sich, dass der Hersteller Adobe sich lieber um die gewinnbringende Cloud, Community und die diversen Dienste kümmert als um die offlinefähigen, beliebten und weitverbreiteten PDF-Formulare.