Donnez vie à vos documents numériques !
 

Ajout de line de code avec JavaScript

abracadabraPDF Forums PDF – Général Ajout de line de code avec JavaScript

  • Ce sujet contient 15 réponses, 4 participants et a été mis à jour pour la dernière fois par michel c., le il y a 1 mois.
  • Créateur
    Sujet
  • #75438
    jctremblay
    Participant

    Bonjour,

    J’essai d’inclure les codes (Script de document) pour l’ajout à l’aide d’un javascript.
    Est-ce que la seule façon est de mettre des ” … \n”+ au début et la fin de chaque lignes?
    C’est laborieux.

    Merci!

    • Ce sujet a été modifié le il y a 1 mois et 1 semaine par jctremblay.
Affichage de 15 réponses de 1 à 15 (sur un total de 15)
  • Auteur
    Réponses
  • #75440
    bebarth
    Maître des clés

    bonjour,
    Je ne suis pas certain d’avoir tout compris, mais au cas où voici un fichier que j’avais fait à partir du fichier “Texte2Unicode” de Merlin.
    Ce fichier ajoute un caractère d’échappement pour différents cas. Tu me dis…

    @+
    😎

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

    J’ai ce javascript qui ajoute un script de document.

    var scriptName = “ScriptPersonnalise”;
    var scriptContent = “app.alert(‘Bonjour, ceci est un script de document personnalisé !’);”;
    this.addScript(scriptName, scriptContent);

    C’est quand le scriptContent est plusieurs dizaine de ligne que ça se complique.

    Le but étant de pouvoir écrire du script à l’aide d’un javascript.

    #75443
    Merlin
    Maître des clés

    Bonjour

     

    Il faut que tu utilises un utilitaire pour convertir le script JavaScript en texte (une seule chaine de caractères), par exemple :

     

    #75444
    jctremblay
    Participant

    Merci Merlin!
    Exactement ce qu’il me fallait. Je me voyais mal faire ça manuellement sur plus de 600 lignes.

    #75445
    bebarth
    Maître des clés

    bonjour,
    C’est ce qu’est censé faire le fichier que j’ai partagé !

    @+
    😎

    #75446
    jctremblay
    Participant

    Oui, j’ai vu. Je dois tester. Merci!
    J’aime bien la lisibilité qu’offre le résultat de https://jsstringconverter.bbody.io/

    #75447
    michel c.
    Participant

    Bonjour, j’ai testé en apportant une petite modif, et je ne comprend pas quel problème vous soulevez…

    Attachments:
    You must be logged in to view attached files.
    #75449
    Merlin
    Maître des clés

    babarth, dans ton document je crois que c’est “Texte converti avec caractères d’échappement pour les guillemets,” qui est le mieux.

    Avec le même script de départ voilà ce que ça donne avec l’utilitaire de Thom Parker, qui ajoute aussi les tabulations et les sauts de lignes mais en fait ça ne sert à rien car les machines n’en tiennent pas compte de toute façon. Au mieux ça ne sert qu’aux humains qui veulent ensuite faire l’opération inverse.

    "if (event.target.buttonGetCaption()==\"Montrer\") {\r\n\tthis.viewState={overViewMode:7};\r\n\tevent.target.buttonSetCaption(\"Cacher\");\r\n} else {\r\n\tthis.viewState={overViewMode:0};\r\n\tevent.target.buttonSetCaption(\"Montrer\");\r\n}"

    #75450
    Merlin
    Maître des clés

    “je ne comprend pas quel problème vous soulevez”

    Le truc c’est que quand on utilise un script pour ajouter un script (de document ou d’objet) il faut que le script ajouté soit sous forme d’une chaîne de caractères (string), sans contenir de guillemets ni de caractères spéciaux qui pourrait la segmenter. Et donc rendre le script ajouté inutilisable.

    Quand c’est un simple script d’une ou deux lignes, pas de souci. Mais quand c’est plus complexe il faut y faire attention.

    #75490
    michel c.
    Participant

    Ok, merci

    Par contre, je rebondit sur ce sujet mais il n’est pas possible d’ajouter un script affectée à une action à plusieurs champs en même temps?

    J’aimerais affecter le code : fillDropdown(); à 80 listes déroulantes et je suis obligé de le faire manuellement…

     

    Merci

    #75493
    Merlin
    Maître des clés

    Oui, mais comment sont nommées ces listes déroulantes ?

    #75495
    jctremblay
    Participant

    Michel, si c’est pour mettre en action dans tout les listes déroulantes, tu peux executer ça dans la Console.

    for (var i = 0; i < this.numFields; i++) {
    var f = this.getField(this.getNthFieldName(i));
    if (f.type === "combobox") f.setAction("MouseUp", "fillDropdown();");
    }

    #75496
    bebarth
    Maître des clés

    bonjour,
    Attention aux scripts “Souris relâchée” pour les menus déroulants qui s’exécutent avant de relâcher réellement.
    Je pense qu’il vaut mieux utiliser un script de touches personnalisé tel que :
    if (!event.willCommit) fillDropdown();

    Donc pour placer cette ligne en Script de touches personnalisé de tous les menus déroulants il faut exécuter :
    for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (f.type=="combobox") f.setAction("Keystroke", "if (!event.willCommit) fillDropdown();");
    }

    Pour ajouter une petite précision, on peut utiliser if (event.willCommit)... si on est certain que la case “Valider la valeur sélectionnée immédiatement” est cochée, mais pour être certain que celà fonctionne j’ai l’habitude d’utiliser if (!event.willCommit)...

    @+
    😎

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

    Merci Bebarth, un détail important.

    #75504
    michel c.
    Participant

    En fait je me suis embarqué dans un truc qui me dépasse un peu.

    J’essaye d’adapter 2 scripts que BB m’avait concocté pour un autre document mais j’avoue que je m’y perd un peu.

    En gros, j’aimerais que lorsque je clique sur générer les questions sur la page2 du document :

    • chaque ligne du champ entreeListe soit propulsée comme élément des listes Q.a.b (la valeur a sera prise dans le champ NQuest)
    • que chaque champ Q.a.b ait comme action en “souris entre” : fillDropdown();
    • que chaque champ Q.a.b ait comme “action de frappe” : if (!event.willCommit) {selection();}
    • l’entrée 2 des champs Q.a.b soit propulsée comme valeur du champs R.a.1 (car l’entrée 1 est le symbole -)
    • l’entrée 3 des champs Q.a.b soit propulsée comme valeur du champs R.a.2 et ainsi de suite
    • Que soient retirées des entrées des listes Q.a.b les éléments déjà sélectionnés

     

    • Le script qu’avait fait BB et que j’essaye d’adapter propulse dans les listes des valeurs différentes des éléments affichés mais je n’ai plus besoin de ça ici.
    • Je n’ai plus besoin non plus d’avoir le tri des éléments ni le comptage des éléments dans les champs groupe.a.b
    • Je n’ai plus besoin non plus des champs Group.a

    En fait dans ce document, les élèves s’y perdent car ils ne savent plus quelles pièces ils ont déjà saisie…

    J’essaye donc tant bien que mal à adapter ces scripts mais j’avoue que ça me donne du fil à retordre car je suis loin de maitriser chaque ligne de code…

    Ce document comporte beaucoup de scripts, mais il n’y a que 2 scripts concernés : celui affecté au bouton generateur et le script de document Init

    J’ai déjà apporté des modifications aux script initiaux avec plus ou moins de succès…

    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    • Cette réponse a été modifiée le il y a 1 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
Affichage de 15 réponses de 1 à 15 (sur un total de 15)
  • Vous devez être connecté pour répondre à ce sujet.