Donnez vie à vos documents numériques !
 

Besoin tutoriel / mode d’emploi pour code javascript sur Acrobat pro X – RÉPONDU

abracadabraPDF Forums PDF – Général Besoin tutoriel / mode d’emploi pour code javascript sur Acrobat pro X – RÉPONDU

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44047
    nanoleb
    Membre

    Bonjour,

    Je suis en train de transformer des feuilles de calcul excel en pdf, et pour cela je dois coder les calculs (avec conditions) en javascript dans les différentes cases. Je fais des tests à partir d’exemples que j’ai trouvé sur le net, mais il y a toujours des erreurs de syntaxe car mes calculs n’aboutissent pas.

    Pourriez-vous me diriger vers un tutoriel ou mode d’emploi ou serait donné toutes les fonctions, codes utiles, astuces ? J’ai beau cherché, je ne trouve aucun tuto gratuit.

    Je pourrais poser mes questions de manière ponctuelle, mais je souhaite réellement apprendre et maitriser le code!

    Merci d’avance !

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #52294
    alex
    Participant

    Pour les calculs, la syntaxe JavaScript est la même dans Acrobat et en HTML.
    Je vous conseille donc le site de developpez.com:
    http://javascript.developpez.com/cours/
    Pour ma part, pour les maths, j’utilise aussi un petit mémento JavaScript publié aux éditions Eyrolles: JavaScript précis & concis de David Flanagan

    Cela dit, il faut bien maîtriser la gestion des évènements de l’environnement Acrobat pour rendre l’usage des formulaires agréable.

    Bonne chance.

    #52295
    nanoleb
    Membre

    En fait le problème n’est pas avec le code de calcul javascript, mais avec les spécificité de adobe, comment deviner au début l’utilisation de this.getField, event, comment manipuler au niveau de la syntaxe les cases à cocher/liste déroulante/bouton radio, mon problème réside dans la manipulation des objets d’adobe acrobat… y a-t-il un mode d’emploi ?

    par exemple ici je veux faire deux calculs différent suivant l’un des boutons radio sélectionné (choix), ou est l’erreur ?

    var c=this.getField(“choix”);
    var d1a=this.getField(“def1a”);
    var d1b=this.getField(“def1b”);
    var r=this.getField(“rep1”);
    var p=this.getField(“poids1”);

    If(c.value=”frad6″)
    {
      event.value=(r.value-d1b.value)*p.value;
    }
    Else
    {
      event.value=(r.value-d1a.value)*p.value;
    }

    #52296
    alex
    Participant

    La syntaxe est enigmatique pour moi!
    if et else sont à mettre en minuscules.
    Quel est la formule du mystérieux calcul à effectuer et où afficher le résultat ?

    #52297
    nanoleb
    Membre

    Pardon, j’ai copié/collé mon texte sans le simplifier
    en gros jai un bouton radio avec 6 choix : “choix” les réponses étant choix1, choix2…, choix6

    pour les 5 premiers choix je veux que la case sur laquelle je fais le calcul affiche
    (case1-case2)*case3
    pour le 6 eme je veux
    (case1-case4)*case3

    mon code est le suivant :

    var c=this.getField(“choix”);
    var a1=this.getField(“case1”);
    var a2=this.getField(“case2”);
    var a3=this.getField(“case3”);
    var a4=this.getField(“case4”);
    if(c.value=”choix6″)
    {
      event.value=(a1.value-a2.value)*a3.value;
    }
    else
    {
    event.value=(a1.value-a4.value)*a3.value;
    }

    #52298
    nanoleb
    Membre

    Par ailleurs il m’indique “la valeur indiquée ne correspond pas au format du champs [p]” p etant le nom de la case ou je fais le calcul et qui doit recevoir la valeur.
    Pourtant j’ai bien mis tous les formats en type “nombre” !

    #52299
    alex
    Participant

    Je n’y comprend rien. Envoyez votre formulaire.

    #52300
    nanoleb
    Membre

    Je suis vraiment désolée, je croyais être claire… mon fichier ne l’est pas du tout car il y a beaucoup de champs et d’opérations, j’ai représenté le problème dans un nouveau fichier que voici. En esperant que vous comprendrez …
    MERCI

    [attachment deleted by admin]

    #52301
    alex
    Participant

    Le calcul ci-dessous est lançé depuis le champ “Resultat”:
    Calcul();
    Au niveau du document, la fonction Calcul a été créée. Ouvrir la console pour visualiser le suivi du calcul (console.println)
    function Calcul()
    {
    console.clear();
    console.println(“Debut du calcul apres action sur “+this.event.target.name+” de valeur “+this.event.target.value)
    var c=this.getField(“Groupe”);
    var a1=this.getField(“case1”);
    var a2=this.getField(“case2”);
    var a3=this.getField(“case3”);
    var a4=this.getField(“case4”);
    if(c.value==”Choix6″)
    {
    console.println(“Cas 6”)
    this.getField(“Resultat”).value=(a1.value-a4.value)*a3.value;
    }
    if(c.value!=”Choix6″)
    {
    console.println(“Autres cas”)
    this.getField(“Resultat”).value=(a1.value-a2.value)*a3.value;
    }
    }

    Regardez bien les comparaisons:
    c.value==”Choix6″

    Voir maquette…

    [attachment deleted by admin]

    #52302
    nanoleb
    Membre

    MERCI BEAUCOUP  :extra: !! je suis vraiment débutante en la matière et c’est fou ce que ce forum me sauve la vie !! c’est bien mieux qu’un tutoriel !! Merci pour votre reponse rapide et efficace !
    cependant j’ai quelque questions pour aller plus loin !
    1. a quoi servent les lignes appelant la console ?
      ex : console.println(…) ?
    2. si ma condition portait sur des boites à cocher comment exprimer la condition :” choix 1 est coché” ? 
      estce (this.getField(“choix1”).check=true) ?
    3. de même si ma condition portait sur un choix dans une liste déroulante ? ou sur une liste de choix ?
      quelle est la syntaxe ?

    encore merci!

    #52303
    nanoleb
    Membre

    une dernière :
    4. que signifie le message d’erreur “NaN” dans une case ? j’ai transposé la fonction sur ma feuille de calcul (juste changé le nom des champs  correspondant) et il y a apparition de ce message alors que j’ai fait exactement comme sur votre fichier. je commence a m’arracher les cheveux….  :mur:

    #52304
    Merlin
    Maître des clés

    NaN : Not a Number (Pas un nombre)

    :bonjour:

    #52305
    alex
    Participant

    1-L’objet console permet d’afficher les erreurs de syntaxe ou les informations que l’on souhaite visualiser pour suivre le -déroulement d’un script. Pour ouvrir la console Ctrl-J sur Pc ou Pomme J sur Mac.
    Quelques bases:
    console.clear();
    efface le contenu de la console.
    console.show();
    affiche la console.
    console.println(“Texte sur la console”);
    écrit la ligne “Texte sur la console” dans la console.
    console.println(this.gefField(“Resultat”).value);
    donne la valeur du champ “Resultat”.

    2-Le statut coché d’une case à cocher:
    if(this.getField(“CaseACocher”).isBoxChecked())
    {
    //script à éxécuter…
    }
    3-Sur une liste déroulante, on peut tester:
    this.getField(“ListeDeroulante”).value
    ou
    this.getField(“ListeDeroulante”).valueEx

    Le plus simple est de capter les évènement à la source, ici le script associé à la liste déroulante:
    Onglet Format>Script de touches personnalisé, exemple:

    this.getField(“ResultatValeur”).value=this.event.change;
    this.getField(“ResultatValeurEx”).value=this.event.changeEx;

    Voir maquette jointe.

    4-Merlin a répondu, il faut être attentif au format des champs…

    [attachment deleted by admin]

    #52306
    Merlin
    Maître des clés

    Quelques bases:
    console.clear();
    efface le contenu de la console.
    console.show();
    affiche la console.
    console.println(“Texte sur la console”);
    écrit la ligne “Texte sur la console” dans la console.
    console.println(this.gefField(“Resultat”).value);
    donne la valeur du champ “Resultat”.

    J’ai encore appris quelque chose aujourd’hui !
    Je vais garder ça au chaud.
    :extra:

    #52307
    nanoleb
    Membre

    Merci beaucoup pour toutes ces informations, tout s’éclaircit!! je continue à avoir des problème avec le “format” du champs pour certains calculs plus compliqués, du coup je passe par d’autres champs invisibles pour découper le calcul en choses plus élémentaires.
    ah, j’ai aussi remarqué qu’il refuse de calculer si on lui met une valeur par défaut… toujours la meme reponse : NaN…
    Quoi qu’il en soit j’ai réussi a créer ma feuille de calcul.
    Mille mercis !!!  :Smiley08:

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.