Donnez vie à vos documents numériques !
 

Message annuler ou continuer lors d’un clic sur une action

abracadabraPDF Forums PDF – Général Message annuler ou continuer lors d’un clic sur une action

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46485
    Fun27
    Membre

    Bonjour,

    J’ai un bouton qui exécute plusieurs actions (afficher des champs, exécuter un JavaScript…) mais j’aimerais placer en début d’action un JavaScript qui démarre un message: « Confirmer vous la validation ? » avec comme possibilité de réponse « annuler » ou « confirmer »
    si l’on sélectionne annuler j’aimerais qu’il abandonne les actions suivantes, cela est il possible?

Affichage de 17 réponses de 26 à 42 (sur un total de 42)
  • Auteur
    Réponses
  • #68523
    bebarth
    Maître des clés

    bonjour,
    Essaie avec ceci, car apparemment aucune action n’est exécutée !
    Le « problème » avec try/catch c’est qu’il n’y a pas de message d’erreur…

    Code:
    console.show();
    console.clear();
    if (app.alert({cMsg: « Confirmez-vous la validation ? », cTitle: « COMMANDE PROTOTYPE », nIcon: 2, nType: 2}) == 4) {
        // 1
        console.println(« Avant #1 »);
        this.submitForm({cURL: « file:///O:Fiche orangecode numero.xfdf », cSubmitAs: « XFDF »});
        console.println(« Après #1 »);
        // 2
        console.println(« Avant #2 »);
        app.openDoc(« file:///O:Fiche orangeCode macro e.vbs »);
        console.println(« Après #2 »);
        // 3
        console.println(« Avant #3 »);
        this.getField(« Cache_Proto »).display = display.hidden;
        this.getField(« cadre_PR »).display = display.visible;
        this.getField(« Cache_serie »).display = display.visible;
        console.println(« Après #3 »);
        // 4 (non modifié)
        console.println(« Avant #4 »);
        var fTo = this.getField(« To0 »).value;
        var fSubject = this.getField(« Subject0 »).value;
        var fBody = this.getField(« Body0 »).value + « nn » + « //CHPDWS1/Data/O/Fiche_orange/Fiches/ » + this.documentFileName + « n » + (« Ouvrir le fichier uniquement avec le raccourci ci-dessus et non avec le fichier joint en Objet. »);
        this.mailDoc({cTo: fTo, cSubject: fSubject, cMsg: fBody});
        app.execMenuItem(« Save »);
        console.println(« Après #4 »);
    }

    Je pense que tu devais avoir comme réponse « Avant #1 », puis un message d’erreur…
    Est-ce que le lecteur « O » définit sur ton poste est également « O » sur les autres ???
    Essaie de remplacer chaque slash par « / » (slash antislash) et chaque antislashs par « \ » (2 antislashs) comme pour var fBody.
    @+
    :bonjour:

    #68524
    Fun27
    Membre

    Selon image ci-joint la console affiche jusqu’à avant 2, cela veut il dire que l’erreur est dans l’action 2?

    #68525
    bebarth
    Maître des clés

    …donc le script n’exécute pas l’action 2 !
    As-tu regardé l’histoire du lecteur « O »  ou modifié les slash/antislash ?

    Est-ce que l’action 1 s’exécute correctement ?
    J’ai regardé vite fait les exemple de submitForm et il est indiqué « The URL to submit to. This string must end in #FDF if the result from the submission is FDF or XFDF » !
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_submitFormbc-106&rhtocid=_6_1_8_23_1_105
    Donc pour moi tu devrais écrire quelque chose comme :

    Code:
    this.submitForm({cURL: « file:///O:Fiche orangecode numero.xfdf#FDF », cSubmitAs: « XFDF »});

    Regarde les exemples…
    @+
    :bonjour:

    #68526
    Merlin
    Maître des clés

    Le « problème » avec try/catch c’est qu’il n’y a pas de message d’erreur…

    Mea culpa.  :geek:
    Ce n’est pas faux, sauf si on lui demande explicitement.

    Remplace :
    catch (e) {};

    Par :
    catch (e) {
    console.show();
    console.println(« Erreur :  » + e + « nn »);
    for (var i in e) {console.println( i + « :  » + e)};
    };

    Pour avoir un luxe de détails sur l’erreur en cause.

    Pour moi ça sent le problème de « sécurité » ou de droits d’accès…
    Quel logiciel utilisent les postes utilisateurs, Acrobat Reader ou Foxit Reader ?

    #68527
    bebarth
    Maître des clés

    :extra:

    @+
    :bonjour:

    #68528
    Fun27
    Membre

    Alors il y avait effectivement un problème de sécurité sur les postes collaborateurs, le mode lecture sécurisé était activé :Ooops:

    Suite à plusieurs test tous fonctionnes sauf l’action numéro 2 pour exécuter un fichier. Si je supprime l’action 2 toutes les actions fonctionnes.
    Par contre je pense qu’il s’agit d’un problème dans le codage car cette action 2 ne fonctionne pas également sur mon propre poste.

    Voici mon code actuel:
    + »file:///\\CHPDWS1\Data\O\Fiches%20orange\Fiches\ »+this.documentFileName+

    Code:

    if (app.alert({cMsg: « Confirmez-vous la validation ? », cTitle: « COMMANDE SERIE », nIcon: 2, nType: 2}) == 4) {
       
        // 1
        this.submitForm({cURL: « file:///O:/Fiches orange/Données/code numero.xfdf », cSubmitAs: « XFDF »});
       
        // 2
        app.openDoc(« file:///O:/Fiches orange/Données/Code macro i.vbs »);

        // 3
        this.getField(« cadre_SR »).display = display.visible;
        this.getField(« Cache_serie »).display = display.hidden;
       
        // 4
        var fTo = this.getField(« To3 »).value;
        var fSubject = this.getField(« Subject2 »).value;
        var fBody = this.getField(« Body0 »).value + « nn » + »file:///\\CHPDWS1\Data\O\Fiches%20orange\Fiches\ »+this.documentFileName+ « n » + (« Ouvrir le fichier uniquement avec le raccourci ci-dessus et non avec le fichier joint en Objet. »);
        this.mailDoc({cTo: fTo, cSubject: fSubject, cMsg: fBody});
       
    app.execMenuItem(« Save »);
    }

    #68529
    bebarth
    Maître des clés

    Vérifie le chemin de ton fichier !
    Tu places un document .pdf dans le même répertoire, tu l’ouvres et dans la console (vierge) tu écris this.path.
    Tu sélectionnes le tout et appuies sur la touche « Entr » du pavé numérique.
    Le chemin correspond-il ???
    @+
    :bonjour:

    #68530
    Merlin
    Maître des clés

    Je viens de vérifier dans la documentation, app.opendoc n’est utilisable que pour ouvrir des fichiers PDF (je cite) : Opens a specified PDF document…
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/app_methods.htm?rhhlterm=opendoc&rhsyns=%20#XREF_61826_openDoc

    1000 excuses, mais la petite ligne qu’on avait pas lue ça fait aussi partie des joies de la programmation.
    :siffle:

    #68531
    Fun27
    Membre

    Pas de souci, sans votre aide je n’en serait pas là!

    Par contre je ne trouve pas de code pour ouvrir un fichier .vbs
    Sais tu si cela est possible?

    Bebarth, je ne trouve pas ta console pour insérer this.path.
    La seul console que j’ai est celle en image ci-joint.

    #68532
    bebarth
    Maître des clés

    Il n’y a pas plusieurs consoles !
    Moi c’est celle d’Acrobat Pro, toi ce doit être celle de Foxit.
    Ecris this.path dans cette console, puis bouton « Exécuter ».
    @+
    :bonjour:

    #68533
    Merlin
    Maître des clés

    Par contre je ne trouve pas de code pour ouvrir un fichier .vbs
    Sais tu si cela est possible?

    A priori j’aurais dit oui, mais j’ai cherché dans la documentation et je n’ai pas trouvé.
    Du coup j’ai l’impression d’avoir raté quelque chose…  :Euuuh:

    Ce qui m’étonne le plus c’est que ça fonctionne avec une simple action mais pas avec JavaScript, mais je n’ai pas fini de creuser.

    #68534
    bebarth
    Maître des clés

    bonjour,
    Moi j’aurais dit (comme précédemment dans la discussion) avec exportDataObject, seulement s’il le fichier est en pièce jointe du document, et qu’il a été joint via le panneau et non avec le commentaire « pièce jointe ».
    @+
    :bonjour:

    #68535
    Merlin
    Maître des clés

    Je n’avais pas capté, mais effectivement ce serait le moyen le plus sur et le plus simple.

    #68536
    Fun27
    Membre

    Je ne connais pas exportDataObject, si je vous suis je devrais mettre un fichier joint XFDF dans mon formulaire PDF???
    Cela m’embête un peut car ce formulaire contiendra déjà d’autres fichiers joints qui seront ajouté au fur et à mesure des étapes par différent utilisateurs.

    J’ai essayer des recherche comme par exemple:

    Code:
    Runtime.getRuntime().exec( « wscript O:/Fiches orange/Données/Code macro i.vbs » );

    Mais cela ne fonctionne pas

    #68537
    Merlin
    Maître des clés

    Je ne connais pas exportDataObject, si je vous suis je devrais mettre un fichier joint XFDF dans mon formulaire PDF?

    Non, tu mets le .vbs en pièce jointe et à la place du code précédent tu utilises :

    this.exportDataObject({cName: « Code macro i.vbs« , nLaunch: 2});

    #68538
    Merlin
    Maître des clés

    L’idée était bonne mais VBS fait partie des formats de fichiers « sensibles », donc exportDataObject provoque une erreur de sécurité.
    Si on essaye de mettre un VBS en pièce jointe dans un PDF, Acrobat affiche une alerte pas très claire qui signifie en fait qu’on peut mettre ce type de fichier en PJ (OK) mais qu’on ne pourra pas l’ouvrir ou l’exporter, ni manuellement ni programmatiquement.
    Et contrairement à ce qu’indique le message ça n’a rien à voir avec le Trust Manager qui ne propose pas ce réglage (dans les Préférences), ça se modifie quelque part dans la base de registre de Windows…

    Je viens de vérifier.  :camenerve:

    #68539
    Fun27
    Membre

    Afin de détourner le problème, mon idée est de mettre l’ouverture du fichier .vbs en action après le Javascript (avec « ouvrir exécuter un fichier » comme sur l’image ci-joint)
    Dans ce cas mon fichier .vbs sera a chaque fois ouvert mais dans mon code JavaScript j’ajoute un champ qui sera récupéré dans ma macro excel afin de lui dire d’exécuter ou non la macro!

    – si le champ est à 0 il ne l’exécute pas.
    – si le champ est à 1 il l’exécute.

    voici mon idée de code mais j’ai besoin de vous pour savoir comment remplir un champ automatiquement (en début du JavaScript et au point 1) :

    Code:

    Mettre 0 dans le champs « Champ texte0 » (avant début du if)

    if (app.alert({cMsg: « Confirmez-vous la validation ? », cTitle: « COMMANDE SERIE », nIcon: 2, nType: 2}) == 4) {
        // 1
      Mettre 1 dans le champs « Champ texte0 »
        // 2
        this.submitForm({cURL: « file:///O:/Fiches orange/Données/code numero.xfdf », cSubmitAs: « XFDF »});
        // 3
        this.getField(« AppT »).display = display.visible;
        this.getField(« AppA »).display = display.visible;
        this.getField(« APP2 »).display = display.visible;
        this.getField(« AppOK »).display = display.hidden;
        this.getField(« Envoyer APP1 »).display = display.hidden;
        this.getField(« Ajouter Fichier »).display = display.hidden;
        // 4
        var fTo = this.getField(« To5 »).value;
        var fSubject = this.getField(« Subject3 »).value;
        var fBody = this.getField(« BodyAPP »).value + »file:///\\CHPDWS1\Data\O\Fiches%20orange\Fiches\ »+this.documentFileName+ « n »;
        this.mailDoc({cTo: fTo, cSubject: fSubject, cMsg: fBody});

    app.execMenuItem(« Save »);
    }

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