Java PDF Formular - Punkt durch Komma ersetzen (Zahlenformatänderung)

Xanko

Newbie
Registriert
März 2023
Beiträge
5
Hallo zusammen,

ich bin absolut unerfahren in Sachen Java-Programmierung und habe folgendes Problem:
Ich habe mit Adobe Acrobat Pro ein Formular entworfen, in dem ich zwei Felder habe:

In Feld1 gibt man einen Wert (Beispiel: 2,4) ein, dann soll von der Zahl 12 dieser Wert aus Feld1 abgezogen und in Feld2 ausgegeben werden.

Bisher habe ich folgende Formel im benutzdefiniertem Berechnungsskript des Feld2 hinterlegt:

var WertA = this.getField("Feld1");
event.value = Math.floor(12 - WertA.value)

Das ganze funktioniert einwandferei, solange ich in Feld1 das amerikanische Zahlenformat mit Punkt statt Komma eingebe (Beispiel: 2.4 statt 2,4). Ich möchte aber gerne das deutsche Zahlenformat mit Komma eingeben können. Was muss ich tun?

Ich habe hier im Forum schon einige Beiträge dazu gefunden und auch herumexperimentiert. Aber da ich leider keinerlei Erfahrung im Bereich Java habe, habe ich scheinbar von selbst noch nicht die richtige Lösung gefunden und deshalb hoffe ich, dass mir einer von euch bei dem Problem weiterhelfen kann.
 
wie wäre es bei dem text einfach das Komma durch ein Punk ersetzen... WertA=WertA.replaceAll(",", ".")
 
Genau das habe ich in einem anderen Beitrag hier gefunden und schon probiert:

var WertA = this.getField("Feld1");
WertA = WertA.replaceAll(",", ".")
event.value = Math.floor(12 - WertA.value)

Leider reagiert Adobe Acrobat Pro darauf überhaupt nicht. Sowie ich diese Zeile einfüge findet keinerlei Berechnung mehr statt.
 
Zuletzt bearbeitet:
Was nutzt du denn nun? Java oder Javascript? Meines Wissens nach unterstützt PDF nur Javascript.

In deinem Beispiel fehlen in Zeilen 2 und 3 schonmal die Semikolons am Zeilenende.
Ergänzung ()

Ich hab nie in PDF geskriptet und der Artikel hier ist auch schon fast 10 Jahre alt, aber ich denke mal dass der noch so halbwegs funktionieren wird. Ich würde wie dort beschrieben mir erstmal die Javascript-Console öffnen, um eventuelle Fehler sehen zu können. Mit dem Debugger kannst du in deinem Code wohl auch Haltepunkte setzen und ihn genauer analysieren:
https://acrobatusers.com/tutorials/javascript_console/
(auch https://helpx.adobe.com/de/acrobat/using/add-debug-javascript.html)
 
  • Gefällt mir
Reaktionen: Nebuk
Javaskript soweit ich das sehe. Wie gesagt, ich kenne mich da leider überhaupt nicht aus und versuche mir das nötige Wissen durch lesen und probieren anzueignen. Hat bis zu dem Problem mit dem Punkt auch ganz gut geklappt.

Ich habe jetzt in Zeile 2 und 3 ein Semikolon eingefügt. Leider reagiert Adobe immer noch nicht darauf.

var WertA = this.getField("Feld1");
WertA = WertA.replaceAll(",", ".");
event.value = Math.floor(12 - WertA.value);
 
Javascript:
var wertA = this.getField("Feld1").value;
wertA = wertA.replaceAll(",", ".");
event.value = Math.floor(12 - wertA);
 
Vielleicht passt die automatische Typzuordnung nicht, d. h. evtl. macht er einen "float" in Zeile 1 und dann wird plötzlich ein replaceAll() darauf angewendet.
Gibt es sowas wie eine console oder kann man Fehlerausgaben erzwingen?
 
Wie man die Console öffnet hab ich oben verlinkt ;)
Auch wenn ich zugeben muss, dass das nicht sehr einsteigerfreundlich aussieht.

Der Grund wird einfach sein, dass getField() ein Objekt vom Typ InputField oder ähnlich zurückgeben wird, aus dem du den Wert mit .value holen kannst.

Wenn du direkt auf dem InputField .replace() aufrufst, wird das nicht funktionieren. Das steht bestimmt auch in der Fehlerkonsole (call to undefined method replace() on object).
 
  • Gefällt mir
Reaktionen: BoeserBrot und moneymaker4ever
Physikbuddha schrieb:
Javascript:
var wertA = this.getField("Feld1").value;
wertA = wertA.replaceAll(",", ".");
event.value = Math.floor(12 - wertA);
Nein, leider auch da keine Reaktion von Adobe
 
statt nachträglich zu reparieren, würde ich eher schauen, ob sich das Formular passend definieren lässt.
k.A. was in deinem Adobe möglich ist, aber etwas ala
Code:
<textarea id="german-text1"  lang="de"></textarea>
oder
Code:
<input type="number" lang="de"/>

oder über die Edit Maske deines Formulars, aber replace sollte der letzte Ausweg sein.
 
Zuletzt bearbeitet:
Da bin ich leider auch nicht weiter gekommen. Kann es sein, dass man wertA erst in einen Text umwandeln muss, dann Komma durch Punkt erstetzt und anschließend wieder ein eine Zahl umwandeln muss? Danach sollte man es doch weiterverrechenen können.
 
@Xanko Dann schau doch bitte einmal, ob du die Developer-Konsole aufkriegst und dir ein paar Haltepunkte in deinen Code setzen kannst. Mehr als vermuten kann zumindest ich nämlich nicht, da ich zwar Javascript kann, aber noch nie mit Acrobat gescriptet habe. Zumindest die Fehlermeldung aus der Konsole, bzw. Infos was deine Variablen wirklich beinhalten, würden hier helfen.
 
Zurück
Oben