Donnez vie à vos documents numériques !
 

Tampons – Texte retour “Undefined”

abracadabraPDF Forums PDF – Général Tampons – Texte retour “Undefined”

  • Ce sujet contient 11 réponses, 3 participants et a été mis à jour pour la dernière fois par Merlin, le il y a 9 mois.
  • Créateur
    Sujet
  • #73268
    jctremblay
    Participant

    Bonjour,
    J’ai un tampon dynamique avec 4 cases à cocher et 3 champs de texte en plus d’une date. Les 4 cases à cocher et la date fonctionne bien lorsque j’applique le tampon. Par contre pour le contenue des champs de texte, le texte capturer dans la fenêtre de dialog ne retour rien autre que “undefined”. Je tourne en rond pour corriger, mais je n’y arrive pas…

    Voici le code. (le fichier tampon est aussi en piece jointe) Ou est-ce que je me plante?

    function Stamps() {
    var oJSDlg = {
    bChk1: null,
    bChk2: null,
    bChk3: null,
    bChk4: null,
    text1: “”, // Initialize text field 1
    text2: “”, // Initialize text field 2
    text3: “”, // Initialize text field 3
    initialize: function (dialog) {
    var oInit = {
    Chk1: this.bChk1,
    Chk2: this.bChk2,
    Chk3: this.bChk3,
    Chk4: this.bChk4,
    Text1: this.text1,
    Text2: this.text2,
    Text3: this.text3,
    };
    dialog.load(oInit);
    },
    validate: function (dialog) {
    var bRtn = true;
    var oRslt = dialog.store();
    return bRtn;
    },
    commit: function (dialog) {
    var oRslt = dialog.store();
    this.bChk1 = oRslt.Chk1;
    this.bChk2 = oRslt.Chk2;
    this.bChk3 = oRslt.Chk3;
    this.bChk4 = oRslt.Chk4;
    this.text1 = oRslt.Text1;
    this.text2 = oRslt.Text2;
    this.text3 = oRslt.Text3;
    },
    description: {
    name: “Conformité”,
    elements: [{
    type: “view”,
    width: 362,
    height: 200,
    elements: [
    {
    type: “check_box”,
    item_id: “Chk1”,
    name: “Vu”,
    },
    {
    type: “check_box”,
    item_id: “Chk2”,
    name: “Vu avec annotation(s)”,
    },
    {
    type: “check_box”,
    item_id: “Chk3”,
    name: “Corriger tel qu’annoté”,
    },
    {
    type: “check_box”,
    item_id: “Chk4”,
    name: “Refusé”,
    },
    {
    type: “edit_text”,
    item_id: “Text1”,
    width: 300,
    height: 20,
    name: “Text Field 1”,
    },
    {
    type: “static_text”,
    item_id: “Desc1”,
    name: “Description for Text Field 1”,
    },
    {
    type: “edit_text”,
    item_id: “Text2”,
    width: 300,
    height: 20,
    name: “Text Field 2”,
    },
    {
    type: “static_text”,
    item_id: “Desc2”,
    name: “Description for Text Field 2”,
    },
    {
    type: “edit_text”,
    item_id: “Text3”,
    width: 300,
    height: 20,
    name: “Text Field 3”,
    },
    {
    type: “static_text”,
    item_id: “Desc3”,
    name: “Description for Text Field 3”,
    },
    {
    type: “ok”,
    },
    ],
    }],
    },
    };

    if (event.source.forReal && (event.source.stampName == “#VBC”)) {
    if (“ok” == app.execDialog(oJSDlg)) {
    this.getField(“Chk1”).checkThisBox(0, oJSDlg.bChk1);
    this.getField(“Chk2”).checkThisBox(0, oJSDlg.bChk2);
    this.getField(“Chk3”).checkThisBox(0, oJSDlg.bChk3);
    this.getField(“Chk4”).checkThisBox(0, oJSDlg.bChk4);

    // Use the correct field names to populate the stamp fields
    this.getField(“Text1”).value = oJSDlg.text1;
    this.getField(“Text2”).value = oJSDlg.text2;
    this.getField(“Text3”).value = oJSDlg.text3;
    }
    }
    }

    Stamps();

    Attachments:
    You must be logged in to view attached files.
Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #73270
    Merlin
    Maître des clés

    Bonjour

     

    Les variables “text1” 2 et 3 sont toujours “undefined”.

    J’ai placé dans le script plusieurs console.println comme celui-ci : console.println("text1= " + text1);

    et la réponse est toujours la même :

    text1= undefined

    Mais je ne comprend pas pourquoi.

     

    #73271
    jctremblay
    Participant

    C’est rassurant… Je ne suis donc pas fou.
    J’ai publié sur la «Community Adobe». On verra ce que nos amis nous diront.

    #73272
    jctremblay
    Participant

    Thom Parker (l’auteur du fameux «All About PDF Stamps») as répondu dans le forum de la communauté.
    L’erreur était que:

    The “item_id” in a dialog object must be 4 and only 4 characters long.
    Otherwise that item cannot be referenced and returns undefined as a value. 

    #73273
    bebarth
    Maître des clés

    bonjour,

    je n’ai que mon téléphone avec moi et je ne peux donc pas essayer, mais les noms des « ID » ne doivent contenir que 4 caractères !

    A essayer donc…

    @+
    😎

    #73274
    bebarth
    Maître des clés

    Oups, je n’avais pas la réponse Thom Parker lorsque j’ai répondu. Désolé !

    @+
    😎

    #73275
    Merlin
    Maître des clés

    “The « item_id » in a dialog object must be 4 and only 4 characters long.”

    Qui a décidé ça ? Laissez le moi ! 

    #73276
    Merlin
    Maître des clés
    #73277
    bebarth
    Maître des clés

    bonjour,
    J’ai passé pas mal de temps à étudier les tampons et boites de dialogue, donc si je peux me permettre, voici un script un peu “simplifié”.
    S’il n’y a rien à initialiser ou rien à vérifier, pas besoin des fonctions “initialize” et “validate” dans le script.
    Par contre, si on veut qu’il y ait au moins une case cochée et tous les champs textes remplis, ce serait peut-être bon de les vérifier…
    Et si on met les valeurs de la boite de dialogue en variables, autant s’en servir lorsqu’on les rappelle pour remplir les champs !

    ///////////////////////////////////
    // Acrobat JavaScript Dialog
    //////////////////////////////////
    var oJSDlg={
    DoDialog: function(){return app.execDialog(this);},
    commit: function (oJSDlg) {
    var oRslt=oJSDlg.store();
    // Lorsqu'on a plusieurs lignes semblables on peut simplifier
    for (var i=1; i<=4; i++) eval("bChk"+i+"=oRslt[\"Chk"+i+"\"];");
    for (var i=1; i<=3; i++) eval("text"+i+"=oRslt[\"Txt"+i+"\"];");
    },
    description: {
    name: "Conformité",
    elements: [{
    type: "view",
    width: 362,
    height: 200,
    elements: [
    {
    type: "check_box",
    item_id: "Chk1",
    name: "Vu",
    },
    {
    type: "check_box",
    item_id: "Chk2",
    name: "Vu avec annotation(s)",
    },
    {
    type: "check_box",
    item_id: "Chk3",
    name: "Corriger tel qu’annoté",
    },
    {
    type: "check_box",
    item_id: "Chk4",
    name: "Refusé",
    },
    {
    type: "edit_text",
    item_id: "Txt1",
    width: 300,
    height: 20,
    name: "Text Field 1",
    },
    {
    type: "static_text",
    name: "Description for Text Field 1",
    },
    {
    type: "edit_text",
    item_id: "Txt2",
    width: 300,
    height: 20,
    name: "Text Field 2",
    },
    {
    type: "static_text",
    name: "Description for Text Field 2",
    },
    {
    type: "edit_text",
    item_id: "Txt3",
    width: 300,
    height: 20,
    name: "Text Field 3",
    },
    {
    type: "static_text",
    name: "Description for Text Field 3",
    },
    {
    type: "ok",
    },
    ],
    }],
    },
    };
    if (event.source.forReal && event.source.stampName=="#VBC") {
    if ("ok"==oJSDlg.DoDialog()) {
    // On pourrait également simplifier
    this.getField("Chk1").checkThisBox(0,bChk1);
    this.getField("Chk2").checkThisBox(0,bChk2);
    this.getField("Chk3").checkThisBox(0,bChk3);
    this.getField("Chk4").checkThisBox(0,bChk4);
    this.getField("Text1").value=text1;
    this.getField("Text2").value=text1;
    this.getField("Text3").value=text1;
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #73279
    jctremblay
    Participant

    Merci mon cher bebarth!
    J’était bien conscience que mon code n’était pas optimale. 😀

    Je vais comparer.
    Merci 1000x

    #73280
    bebarth
    Maître des clés

    …et si tu as besoin pour vérifier que les champs nécessaires sont bien remplis dans la boite de dialogue, n’hésite pas !

    @+
    😎

    #73281
    Merlin
    Maître des clés

    👍

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