Donnez vie à vos documents numériques !
 

Création d’un script d’enregistrement automatique

abracadabraPDF Forums PDF – Général Création d’un script d’enregistrement automatique

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45492
    Breizh29
    Membre

    Bonjour,
    Tout d’abord un grand merci pour la richesse de votre forum. C’est une véritable mine d’informations !

    Je me suis lancé dans la  réalisation d’un formulaire me permettant de remplacer un classique questionnaire de satisfaction papier par un questionnaire en ligne bien plus rapide à renseigner, j’espère ainsi augmenter le nombre de réponses.
    J’ai pu réaliser finalement très rapidement ce formulaire en parcourant ce forum, bien que mes connaissances initiales étaient nulles notamment en termes de javascript. (J’utilise Acrobat DC pro)

    Malheureusement, il me reste à finaliser une dernière action … et là je bloque. Il s’agit de générer un enregistrement automatique du document en fin de questionnaire.
    En regardant dans les fichiers exemples et discussions sur le forum, j’ai bien compris qu’il faut créer un script d’application avec un .js à placer dans le répertoire javascript mais j’aimerai que cet enregistrement soit transparent pour l’usager, une fois  le questionnaire rempli , l’enregistrement soit automatique avec un nom associant date et éventuellement heure afin que le nom soit unique et que le dépouillement des formulaires soit facilité.
    Pouvez-vous me confirmer que cette fonction est bien réalisable ? Je travaille sous environnement Windows.
    Merci de votre aide. Cordialement
    JLC

Affichage de 25 réponses de 1 à 25 (sur un total de 48)
  • Auteur
    Réponses
  • #61315
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Oui c’est faisable mais tout dépend des conditions d’utilisation du formulaire : s’il est en service sur un seul ordinateur ou bien s’il est diffusé largement.

    Dans le 1er cas on a accès au dossier des scripts d’applications, dans le 2e cas non.

    #61316
    Breizh29
    Membre

    Bonjour,
    Merci de votre réponse rapide. Il s’agit bien d’une utilisation sur un seul ordinateur.

    A creuser donc ! je continue mes essais

    #61317
    Merlin
    Maître des clés

    On en a déjà parlé je ne sais plus où ni quand dans le forum, mais ici il y a un tuto de Thom P. qui est complet, clair, net et précis :
    https://acrobatusers.com/tutorials/how-save-pdf-acrobat-javascript

    :bravo:

    #61318
    Breizh29
    Membre

    Super, un grand merci pour ce tutoriel !

    :bravo:

    Cordialement

    #61319
    bebarth
    Maître des clés

    bonjour,
    C’est effectivement très intéressant, et j’en profite pour revenir sur un post :
    http://abracadabrapdf.net/forum/index.php/topic,3037.msg17388.html#msg17388

    Si on adapte le script “Saving to a different file name, folder, and format” comme ceci :

    var nmFichier = this.documentFileName;
    // Split Path into an array so it is easy to work with
    var aMyPath = this.path.split(“/”);
    // Remove old file name
    aMyPath.pop();
    // Add new file name
    aMyPath.push(nmFichier);
    // Put path back together and save
    this.saveAs(aMyPath.join(“/”));

    …ça équivaut à faire un “Enregistrer” (j’ai testé) et là, plus besoin de fichier temporaire… :extra:

    @+
    :bonjour:

    #61320
    Breizh29
    Membre

    Bonsoir,

    J’ai bien envie d’essayer votre proposition mais je n’arrive pas à utiliser votre script.

    Ai-je loupé quelque chose ?
    1- j’ai  définit la fonction  “mySaveAs = app.trustedFunction(” dans un fichier .js
    2- j’ai utilisé votre script dans un champ de formulaire “souris relâchée”

    mais je n’ai rien obtenu … :Euuuh:

    #61321
    bebarth
    Maître des clés

    bonsoir,
    J’utilise ce script avec une action (Outils -> Assistant Action). Il ne fonctionne pas avec un champ de formulaire.
    Je ne suis pas un spécialiste en permissions et privilège, Merlin sera certainement plus à même à t’expliquer !
    A mon avis il doit falloir déclarer une “trusted function”…
    http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fapp_methods.htm%23TOC_execMenuItembc-12&rhtocid=_6_1_8_6_1_11
    http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fapp_methods.htm%23TOC_trustedFunctionbc-36&rhtocid=_6_1_8_6_1_35
    Je suivrai le post car ça m’intéresse aussi.
    @+
    :bonjour:

    #61322
    Merlin
    Maître des clés

    Je ne suis pas un spécialiste en permissions et privilège, Merlin sera certainement plus à même à t’expliquer !

    Tout est là : http://abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
    :Smiley15:

    #61323
    bebarth
    Maître des clés

    Merci Merlin,
    J’avais déjà lu ton article et je pense que j’ai à peu près tout compris  :geek:.
    Quand je parle de “specialiste” je pense surtout à “beginPriv” qui d’après ce que je comprend augmente le privilège, et au “trsted functions”…
    si tu as article là dessus !!!
    Merci
    :bonjour:

    #61324
    Breizh29
    Membre

    Bonjour,

    Je n’arrive décidément pas à finaliser mon fichier questionnaire. Malgré la lecture des différents tutoriels et les tentatives multiples je ne comprends pas comment définir la fonction EnregistrementDoc d’où un message d’erreur au moment de la sauvegarde.  :Euuuh:
    Je suis presque arrivé au bout de mon projet de questionnaire en ligne mais là je bloque depuis plusieurs jours sur cette fonction de sauvegarde. Malgré différentes tentatives avec de multiples essais de routine javascript piochées sur les nombreux documents proposés sur le forum, je n’y arrive pas. Je crois que j’ai atteint mes limites d’apprenti javascripteur :doute:

    Cordialement

    #61325
    Merlin
    Maître des clés

    Bonjour.

    Tu devrais lire attentivement le dernier paragraphe de cette page, il est possible que ton dossier d’enregistrement ne soit pas en “safe path”…
    => https://acrobatusers.com/tutorials/file-paths-acrobat-javascript

    #61326
    Merlin
    Maître des clés

    ERA Vierge.pdf

    9 questions… sans un seul point d’interrogation !
    Et une faute d’orthographe sur la couverture. :tutut:

    Je suis choqué.  :Smiley03:

    #61327
    Breizh29
    Membre

    Effectivement !

    C’est peut-être la raison principale du peu de réponse au formulaire papier !!

    Je me trompe peut-être de combat !  :Smiley02:

    Merci pour le lien sur le “safe path”, je vais relire cela au calme avec un café et un dictionnaire anglais-français, histoire d’essayer de tout comprendre…

    #61328
    Merlin
    Maître des clés

    Merci pour le lien sur le “safe path”, je vais relire cela au calme avec un café et un dictionnaire anglais-français, histoire d’essayer de tout comprendre…

    En gros il vaut mieux se restreindre au dossier Documents du compte utilisateur. Après ça se complique…

    #61329
    Merlin
    Maître des clés

    Sinon j’ai ça qui fonctionne bien.
    (Merci Alex).

    Code:
    /*********************************************************/
    /* version detection, requires Acrobat 8 or later version */
    if (app.formsVersion >= 8)
    {
    creationTrustDoc=app.trustedFunction(function()
    {
    documentInitial=this;
    // console.println(“Debut FNC Trusted *************************************”);
    // console.println(“Usage du plugin pour la cru00E9ation de “+global.NomDuFichier);
    // console.println(“1-cpath initial complet:”+documentInitial.path);
    NomDoc=documentInitial.documentFileName;
    // console.println(“2-Nom du document MASTER:”+NomDoc);
    chemin=documentInitial.path.substring(0,documentInitial.path.length-NomDoc.length);
    cpath=chemin+global.NomDuFichier+”.pdf”;
    // console.println(“3-cpath final complet:”+cpath);
    app.beginPriv();
    //Extraction eventuelle…
    // console.println(“4-Fin extraction ***************************************”);
    //Ouverture document
    OpenDoc = app.openDoc({
    cPath:documentInitial.path,
    bUseConv: true
    });
    // console.println(“5-Fin ouverture ***************************************”);
    //Enregistrement
    OpenDoc.saveAs({
    cPath:cpath,
    bPromptToOverwrite:true
    });
    app.endPriv();
    // console.println(“6-Fin enregistrement ************************************”);
    })
    console.println(“Plugin enregistrement actif.”);
    }
    #61330
    Breizh29
    Membre

    Merci Merlin, je vais essayer mais comment dois-je faire appel à cette routine ?

    Si j’ai bien suivi, il s’agit là du code à placer dans le dossier .js de l’application. Depuis mon formulaire comment dois-je la solliciter ?

    Cdt

    #61331
    Merlin
    Maître des clés

    Si j’ai bien suivi, il s’agit là du code à placer dans le dossier .js de l’application.

    C’est bien ça.
    Et en action souris enfoncée du bouton enregistrer j’ai :

    Code:
    console.clear();
    documentInitial=this;
    global.NomDuFichier=documentInitial.getField(“numero_fact”).value+” “+documentInitial.getField(“client”).value;
    //console.println(“Nom du fichier a enregistrer:”+global.NomDuFichier)
    //Process de création
    try
    {
    creationTrustDoc();
    }
    catch(e)
    {
    app.alert(“Plug In “creationTrustDoc()” manquant !”,1)
    }
    //

    La ligne :
    global.NomDuFichier=documentInitial.getField(“numero_fact”).value+” “+documentInitial.getField(“client”).value;
    récupère les valeurs dans deux champs pour constituer le nouveau nom de fichier.

    #61332
    Breizh29
    Membre

    Ca marche !!!

    C’est impeccable !!  :extra:

    Merci beaucoup, il ne me reste plus qu’à corriger la faute d’orthographe et à rajouter les points d’interrogation !!!

    Un grand merci à mes deux contributeurs Merlin et Bebarth pour cette aide rapide et efficace, je suis bluffé  :bravo:

    Bien cordialement

    #61333
    passifacile
    Participant

    Bonjour, Merlin.

    Intéressé par la fonction d’enregistrement automatique d’un fichier, je tombe sur ce post et, me référant au commentaire de Breizh29 (“Si j’ai bien suivi, il s’agit là du code à placer dans le dossier .js de l’application.”), je n’ai pas compris :

    1) s’il faut créer un fichier “trustedFunction.js”, ou enregistrer le code sous un autre nom ?
    2) Ou, alors, insérer ce code dans un fichier existant ?
    3) Et où se trouve le dossier .js sous mac ?  :Ooops:

    #61334
    bebarth
    Maître des clés

    bonjour,
    Pour atteindre le dossier JavaScripts d’Acrobat sur Mac, tu fais un clique droit sur l’application, puis “Afficher le contenu du paquet” -> Contents -> Resources -> JavaScripts.
    Dans ce dossier, tu places ton fichier .js
    Il faut faire cette manipulation avec Acrobat fermé évidemment afin d’exécuter le script au lancement d’Acrobat.
    @+
    :bonjour:

    #61335
    Merlin
    Maître des clés
    #61336
    passifacile
    Participant

    show_me_the_path : Si je suis les instructions, lorsque je presse “enter” après avoir sélectionné tout le script, j’ai uniquement un retour de chariot à la place du script, dans la console…  :Smiley02:

    Qu’est-ce que je fais de faux (j’utilise en ce moment un Mac) ?

    #61337
    bebarth
    Maître des clés

    bonsoir,
    La touche “Entrée” n’est pas la touche “Retour”…
    Si tu n’as pas de clavier avec pavé numérique, il faut appuyer simultanément les touches “commande” (cmd) et “Retour” !
    @+
    :bonjour:

    #61338
    passifacile
    Participant

    :extra:
    Merci, Merlin et Bebarth.

    Bonne journée.

    #61339
    Merlin
    Maître des clés

    Si tu n’as pas de clavier avec pavé numérique, il faut appuyer simultanément les touches “commande” (cmd) et “Retour” !

    Oui et non, parce-qu’en fait c’est dépendant de la version d’Acrobat.  :mur:

    Avec Acrobat 9 ça ne fonctionne pas, c’est Entrée ou rien.
    Dans les versions suivantes (X, XI et DC) c’est soit la touche majuscule, soit la touche cmd, soit la touche fn.
    (À tester, je ne me souviens pas quelle touche correspond à quelle version)

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