Java Script for Acrobat Reader

Hideto
Hideto
Registrierter Benutzer
Zuletzt hier
07.09.15
Registriert
12.11.04
Beiträge
847
Kekse
2.572
Ort
Hamburg
Hey Leute, hätte ein echt simples aber nervtötendes Problem.
Ich habe eine Tabelle
a1,b1...n1
a2
a3
.
.
.
an
Also ne zweidimensionale Matrix.
Es handelt sich jeweils um Textfelder, da Adobe Reader keine echten Tabellen unterstützt. Ich soll / will den eingegebenen Wert bei Eingabe mit einem Faktor in einem Feld multiplizieren und in das Feld schreiben.
mein Custome Code war:
var wert = 0;
wert = this.getField("a1").value;
var neuerwert = 0;
neuerwert = wert * 0.75;
this.getField("a1").value = neuerwert;

soweit funktioniert auch alles, nur das Problem ist, die Rechnung wiederholt sich mit jeder neuen Eingabe. Gebe ich erst 12 ein kommt richtig 9 raus. Gebe ich in b1 z.b: 10 ein, ändert sich a1 auf einmal auf 6,75 was 9*0,75 wäre.
Ich weiß nur nicht wie ich das unterbinde.
 
Eigenschaft
 
Wie erstellst du denn dein pdf? (Also mit welchem Programm und in welchem Format)
Der Code ansich sollte funktionieren. Es klingt, als hättest du den Listener o.ä. falsch angeklemmt. Der fühlt sich eben auch angesprochen, wenn man in ein anderes Feld klickt.
 
Hab mir die Testversion Acrobat Reader Pro 11 geholt. Erstellt wird das ganze in Standard Adobe PDF. Das Problem is, die Datei is nicht meine eigene sondern von meiner Schwester bzw. ihrer Arbeitsstelle ich wurde nur zu Rate gezogen, weil ich zumindest Java kann. Allerdings von Anfang an sagte, dass ich von javaScript 0 Ahnung genauso wie von JS für Adobe 0 Ahnung hab. Das war das Ergebnis eines durchcodeten Morgens. Darum hab mit dem Listener gar nichts gemacht aber das Schlüsselwort klingt zumindest nach etwas, das ich nachforschen kann.
Hab halt ein Dokument bekommen, wo nur ne Tabelle drin is ich hab dann halt 4 Textfelder nach dem oben genannten Prinzip erstellt und den Code entsprechend für die Felder eingefügt. Darum weiß ich nix von einem Listener.
 
Java kann ich auch, Javascript geht bei mir ebenfalls ganz gut. Mit Javakenntnissen, solltest du ja wissen, was ein Listener ist. Zumindest, wenn du schonmal graphische Oberflächen programmiert hast. ;)

Acrobat Reader Pro 11
meinst du nicht "Acrobat Pro" (also ohne das 'Reader')?

Ich lad mir die Demo auch mal runter und guck was ich erreich kann...
 
Nee hab ich auch in der Uni noch nicht. Aber kann mir ungefähr vorstellen was es ist.
Ja klar Acrobat Pro. Muss ich irgendwo auf Keystroke oder Focus überprüfen?
Naja Java is halt mit Eclipse und co etwas komfortabler durch das Debugging was es hier 0 gibt.
Das lustige ist: selbst wenn ich ein Ersatzfeld erstelle, das ich fest als Faktor 0.75 festlege und die anderen Felder über die vorgefertigten Menüpunkte damit multipliziere multuplizieren sich alle anderen Felder unkontrolliert mit jeder neuen Eingabe weiter. Also selbst wenn ich kein Zeichen direkt in Javascript geschrieben hab.
 
also ich hab das jetzt so gelöst:
- Textfeld erstellen und eindeutigen Namen zuweisen, wie du in deiner Matrix eben
- in den Eigenschaften im Reiter "Aktionen" eine Aktion hinzufügen:
-- Auslöser: Feld deaktivieren
-- Aktion: Javascript ausführen
-- im JS Editor deinen oben geposteten Code eingeben und natürlich bei den "getField()" Methoden das aktuelle Feld angeben
- Summenfelder kannst du ja einfach deklarieren wenn du bei den Feldeigenschaften auf "Berechnung" gehst und dann "Wert ist Summe" nimmst.

hab ich grade ausprobiert und hat für alle Felder unabhängig funktioniert. Problem ist nur, dass das "Feld deaktivieren" nur ausgelöst wird, wenn man woanders hinklickt oder[TAB] drückt, nicht aber wenn man Enter drückt...
 
  • Gefällt mir
Reaktionen: 2 Benutzer
das wäre ok aber klasse muss ich mal ausprobieren.

- - - Aktualisiert - - -

Grandios vielen Vielen Danke :)
 
Ist zwar etwas Friemelarbeit, dass das bei großen Tabellen dann noch einigermaßen gut aussieht, aber wenn das dann funktional noch klappt, ist das doch schön :)
 
Wie gesagt wenn es in PDF sein soll geht es nunmal nicht anders. Aber ja hab ihr jetzt mal 4 Felder vorgearbeitet und geschickt und ruf sie Morgen an und erklär ihr was da passiert ist.
Bin halt davon ausgegangen, dass die Berechnung unter Berechnung passiert und hab das mit Aktion nicht ganz geblickt da ich heute Morgen zum ersten Mal Java Script und Acrobat 11 Pro gesehen hab :D war schon froh, dass ich den Code zusammen gebaut bekommen.
Das ich erst recht spät gelernt hab, dass es nicht 0,75 heißt und das ich nicht in einer Zeile Java / c++ typisch variablen definiere und mit Werten versehen kann wie ich will.
Ich mein in Java hätte ich wahrscheinlich sowas gemacht.
this.getField("b2").value = this.getField("b2").value * 0.75;
wobei das ggf. sogar hier funktionieren könnte. Naja never change a working code...zumindest nicht wenn ich ne Bachelor Arbeit in was ganz anderem zu schreiben hab :)
 

Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben