[Erledigt] Javascript in Acrobat verhält sich "komisch"

Erledigt - Javascript in Acrobat verhält sich "komisch" | PSD-Tutorials.de

Erstellt von tomtom69, 30.08.2019.

  1. tomtom69

    tomtom69 Nicht mehr ganz neu hier

    Dabei seit:
    06.04.2007
    Beiträge:
    79
    Geschlecht:
    männlich
    Javascript in Acrobat verhält sich "komisch"
    Guten Abend zusammen,

    ich hätte hier ein Kuriosum für euch, an dem ich grad verzweifele!

    Ich habe unten stehendes Validierungsscript für ein Formularfeld in Acrobat geschrieben. Dieses hat zum Ziel, dass aus einem eingetragenen Wert der KG Preis bzw. vice-versa der Gesamtpreis errechnet wird (falls eine Veränderung eintritt). Der Aufruf erfolgt über die Feldvalidierung nach Eingabe des Wertes (Preises). Ich habe den Code in einem Reintexteditor geschrieben und per CuP in Acrobat eingefügt.

    Ich hatte diverse male folgende Fehlermeldung:

    SyntaxError: missing } in compound statement


    Tatsächlich war aber keine fehlende Klammer zu sehen. Also bin ich nach dem Ausschlussverfahren vorgegangen und habe leere Zeilen gelöscht .. und siehe da, irgendwann hat es keine Fehlermeldung mehr gegeben! Dann habe ich 2 Variablenwerte geändert (Zahlen) und direkt kam wieder die gleiche Fehlermeldung.

    Ich bin mir auch sicher, dass man das am Ende eleganter lösen könnte, bin aber nicht der riesen Programmierprofi und erstmal geht es um reines Funktionieren ;-)

    Code (Text):
    1.  
    2. //---------V0.7.0.sortiment---------------
    3. //Variablen initialisieren
    4. //kg-Preis (Standard) zwischenspeichern
    5. var nameFeldKg = this.getField("kg_4031707").name;
    6. console.println("Name kg-Feld = " + nameFeldKg);
    7. var kgIni = this.getField(nameFeldKg).value;
    8. console.println("Default-Preis (kgIni) = " + kgIni);
    9. //Gesamt-Preis (Standard) zwischenspeichern
    10. var nameFeldGesamt = nameFeldKg.replace("kg_","");
    11. console.println("Name Gesamt-Feld = " + nameFeldGesamt);
    12. var gesamtIni = this.getField(nameFeldGesamt).value;
    13. console.println("Default-Gesamt-Preis (gesamtIni) = " + gesamtIni);
    14.  
    15. //Verpackungseinheit in g
    16. var VE = 1000;
    17. //Anzahl Verpackungen
    18. var AnzVE = 8;
    19. //Preis pro Gramm
    20. var gPreis = 0;
    21. //Faktor (Menge g für Gesamtpreis) --- Faktor = AnzVE * VE / 1000
    22. //var fak = 0;
    23. var fak = AnzVE * VE / 1000;
    24. //Gesamtpreis aus neuem eingetragenem kg-Preis
    25. var gesamtNeu = 0;
    26. //kg-Preis aus neuem eingetragenem Gesamt-Preis
    27. var kgNeu = 0;
    28. //Gesamtgram
    29. var gGesamt = AnzVE * VE;
    30.  
    31. //RegExp für Euro-Zeichen-Check
    32. var euro = /[€]/;
    33.  
    34. if(event.target.name == nameFeldKg) {
    35.     console.println("Eingabe in KG Feld: " + nameFeldKg);
    36.  
    37.     var kgEingabe = event.value;
    38.  
    39.     //wenn kg-Preis anders als Ini, dann mit neuem Wert faktorisieren und auf gesamt übertragen für Feld gesamtpreis nachher vice-versa
    40.     if(kgEingabe != kgIni) {
    41.         //die Zahl vom Eurozeichen trennen
    42.         kgEingabe = kgEingabe.replace("€ ","");
    43.         //komma durch Punkt ersetzen für parseFloat
    44.         kgEingabe = kgEingabe.replace(",",".");
    45.         var kgPreis = parseFloat(kgEingabe).toFixed(2);
    46.         console.println("kg-Preis = " + kgPreis);
    47.  
    48.         //Gesamtpreis aus eingetragenem kg-Preis errechnen
    49.         gesamtNeu = kgPreis * fak;
    50.         gesamtNeu = parseFloat(gesamtNeu).toFixed(2);
    51.         gesamtNeu = gesamtNeu.replace(".",",");
    52.         gesamtNeu = "€ " + gesamtNeu;
    53.         console.println("Neuer Gesamt-Preis="+gesamtNeu);
    54.        
    55.         this.getField(nameFeldGesamt).value = gesamtNeu;
    56.        
    57.         //wenn das Euro-Zeichen fehlt, dann ergänzen
    58.         if(euro.test(event.value) == false) {
    59.             event.value = "€ " + event.value;
    60.             console.println("kein Euro");
    61.         };
    62.     };
    63. };
    64.  
    65. if(event.target.name == nameFeldGesamt) {
    66.     console.println("Eingabe in Gesamt Feld: " + nameFeldGesamt);
    67.  
    68.     var gesamtEingabe = event.value;
    69.  
    70.     //wenn Gesamt-Preis anders als Ini, dann mit neuem Wert verrechnen und auf kg übertragen für Feld kg-preis
    71.     if(gesamtEingabe != gesamtIni) {
    72.         //die Zahl vom Eurozeichen trennen
    73.         gesamtEingabe = gesamtEingabe.replace("€ ","");
    74.         //komma durch Punkt ersetzen für parseFloat
    75.         gesamtEingabe = gesamtEingabe.replace(",",".");
    76.         var gesamtPreis = parseFloat(gesamtEingabe).toFixed(2);
    77.         console.println("Gesamt-Preis = " + gesamtPreis);
    78.  
    79.         //kg-preis aus eingetragenem Gesamt-Preis errechnen
    80.         gPreis = gesamtPreis / gGesamt;
    81.         console.println("Gramm-Preis = " + gPreis);
    82.         kgNeu =  gPreis * 1000;
    83.         kgNeu = parseFloat(kgNeu).toFixed(2);
    84.         kgNeu = kgNeu.replace(".",",");
    85.         kgNeu = "€ " + kgNeu;
    86.         console.println("Neuer kg-Preis="+ kgNeu);
    87.        
    88.         this.getField(nameFeldKg).value = kgNeu;
    89.        
    90.         //wenn das Euro-Zeichen fehlt, dann ergänzen
    91.         if(euro.test(event.value) == false) {
    92.             event.value = "€ " + event.value;
    93.             console.println("kein Euro");
    94.         };
    95.     };
    96. }

    Ich stehe auf dem Schlauch - findet einer den Fehler?

    Danke und sonnige Grüße,

    Tom
     
    #1      
  2. TutKit

    TutKit Vollzugriff

    Vollzugriff auf sämtliche Inhalte für Photoshop, InDesign, Affinity, 3D, Video & Office

    Suchst du einen effektiven Weg, um deine Geschäftsideen aber auch persönlichen Kenntnisse zu fördern? Teste unsere Lösung mit Vollzugriff auf Tutorials und Vorlagen/Erweiterungen, die dich schneller zum Ziel bringen. Klicke jetzt hier und teste uns kostenlos!

  3. helge07

    helge07 Aktives Mitglied

    Dabei seit:
    15.01.2010
    Beiträge:
    363
    Geschlecht:
    männlich
    Software:
    LR3, PS CS5
    Kameratyp:
    EOS 60D
    Javascript in Acrobat verhält sich "komisch"
    1. Der angegebene Code ist syntaktisch korrekt:
    Ich ein Testformular mit den im Code angegebenen Feldern gebaut und das Validierungsskript drangehängt: Es werden keine syntaktischen Fehler gemeldet das Skript läuft bei mir, die Meldungen kann man im Debugger sehen. Ob die Programmlogik korrekt ist habe ich nicht überprüft.

    Meine Vermutung ist, dass bei der Übergabe vom "Reintexteditor" per Clipboard Zeichen fehlerhaft übertragen wurden. Ich habe die letzte schließende Klammer im Verdacht, da die wohl genau am Ende der Datei steht.

    Ich habe Acrobat so konfiguriert, dass er als externen Editor 'Notepad' benutzt ( --> Einstellingen --> JavaScript ) . Der Acrobat-interne Editor ist also nicht im Spiel.
     
    #2      
  4. tomtom69

    tomtom69 Nicht mehr ganz neu hier

    Dabei seit:
    06.04.2007
    Beiträge:
    79
    Geschlecht:
    männlich
    Javascript in Acrobat verhält sich "komisch"
    Moin,

    danke für die Antwort. Es hat leider nichts gebracht. Ich habe mehrere mögliche Editoren ausprobiert und jedes mal crasht Acrobat. Ich habe das Script auch Buchstabe für buchstabe noch mal in den Acrobat-editor eingegeben.

    Der Fehler besteht weiterhin und treibt mich, gelinde gesagt, in den Wahnsinn!

    Ich konnte es soweit eingrenzen, dass es wohl irgendwas mit dem zweiten if-Statement zu tun haben muss. Solange ich das erste if-Statement alleine stehen lasse ist alles gut. Füge ich ein Zweites darunter hinzu (das gleiche gilt übrigens auch für elseif), kommt o.g. Fehlermeldung. Es liegt auch nicht an meinem Code im if-Statement ... die Fehlermeldung kommt auch, wenn ich ein ganz simples if-Statement reinschreibe.

    Edit: Im Anhang zwei Screenshots von eben ... Die Fehlermeldungen variieren. Wenn ich das simple if-Statement oder den alert-Aufruf lösche ist alles gut.

    Hat jemand noch eine Idee, wie ich das lösen könnte?

    Vielen Dank im voraus,

    Tom

    [​IMG]
    [​IMG]

    P.S. Ich habe als weiteren Lösungsansatz das Script als Dokumentfunktion eingetragen, macht aber keinen Unterschied.
     
    Zuletzt bearbeitet: 02.09.2019
    #3      
  5. Myhar

    Myhar Hat es drauf

    Dabei seit:
    01.11.2007
    Beiträge:
    2.231
    Geschlecht:
    männlich
    Ort:
    Ö
    Javascript in Acrobat verhält sich "komisch"
    #4      
  6. tomtom69

    tomtom69 Nicht mehr ganz neu hier

    Dabei seit:
    06.04.2007
    Beiträge:
    79
    Geschlecht:
    männlich
    Javascript in Acrobat verhält sich "komisch"
    Danke, das werde ich versuchen!

    Allerdings würde mich schon eine Erklärung für dieses äußerst komische Verhalten interessieren ;-)

    Update: hat leider auch nicht funktioniert!
     
    Zuletzt bearbeitet: 02.09.2019
    #5      
  7. tomtom69

    tomtom69 Nicht mehr ganz neu hier

    Dabei seit:
    06.04.2007
    Beiträge:
    79
    Geschlecht:
    männlich
    Javascript in Acrobat verhält sich "komisch"
    Ich habe mir grad mal den Spaß gemacht und einfach einfache if-Statements untereinander gehangen und entsprechend geschaut, was denn so passiert. Ab dem letzten hinzugefügtem kam wieder eine Fehlermeldung. Vorher bei keinem - alle via CuP einzeln Stück für Stück eingefügt und überprüft.

    Ich bin ratlos und für jeden Lösungsansatz oder gar einen Workaround dankbar!

    Sonnige Grüße,

    Tom
    [​IMG]
     
    #6      
  8. helge07

    helge07 Aktives Mitglied

    Dabei seit:
    15.01.2010
    Beiträge:
    363
    Geschlecht:
    männlich
    Software:
    LR3, PS CS5
    Kameratyp:
    EOS 60D
    Javascript in Acrobat verhält sich "komisch"
    Wenn sich Acrobat seltsam verhält, hift es u.U. eine Repair-Installation durchzuführen.
     
    #7      
  9. tomtom69

    tomtom69 Nicht mehr ganz neu hier

    Dabei seit:
    06.04.2007
    Beiträge:
    79
    Geschlecht:
    männlich
    Javascript in Acrobat verhält sich "komisch"
    Leider war die Installationsvariante doch nicht erfolgreich (s.u.).

    Der Fehler liegt wohl im Acrobat für Mac und ist bekannt (https://forums.adobe.com/thread/1019415)
    Für alle, die auch mal vor diesem Problem stehen: Ich habe den JS-Code einfach komprimiert und siehe da ... alles gut :)

    Anmerkung zu unten stehendem: es hat zum Einfügen des Scriptes gelangt, wenn aber was geändert wurde, sind wieder kreative Fehlermeldungen gekommen.
    Hi Helge07,

    auf diese Idee wäre ich wahrscheinlich erst nach Tagen voller Verzweifelung gekommen!

    Das war's ... jetzt nimmt Acrobat das Script ohne zu murren! :)

    Vielen Dank für die Hilfe und sonnige Grüße,

    Tom
     
    Zuletzt bearbeitet: 03.09.2019
    #8      
Seobility SEO Tool
x
×
×