Donnez vie à vos documents numériques !
 

Renommer indices

abracadabraPDF Forums PDF – Général Renommer indices

  • Créateur
    Sujet
  • #75228
    michel c.
    Participant

    Bonjour, il me semble que quelqu’un ici (je pense Merlin) avait parlé d’un logiciel qui permettait de renommer en lot les indices des champs de formulaires dans un ancien post.

    Bien sur je n’ai pas pensé à le noter…

    Si ça vous dit quelque chose.

    Merci

Affichage de 41 réponses de 1 à 41 (sur un total de 41)
  • Auteur
    Réponses
  • #75229
    michel c.
    Participant

    Je viens de tester un truc à partir d’un script trouvé sur le net mais rien ne se passe. Je cherche encore…

    Attachments:
    You must be logged in to view attached files.
    #75231
    michel c.
    Participant

    Je viens de retrouver le logiciel, il s’agit de Pdf Studio. Je viens de tester le renommage séquentiel mais ça ne me fait pas gagner de temps.

    Je voulais renommer 30 champs : “Q.7.1” à “Q.7.30” qui se seraient appelés : “R.7.1″ à R.7.30”.

    Et je voulais que ce soit fait respectivement pour chaque champ (que le Q.7.1 devienne R.7.1 et ainsi de suite)

    Cependant le renommage a été fait dans le désordre.

    Je suis donc à la recherche d’un outil ou d’une astuce pour y arriver.

    En gros si je décompose le nom de champ en 3 parties (nom ; indice1 ; indice2), j’aimerais qu’en spécifiant ou en sélectionnant le nom du champ je puisse modifier l’indice 1 et que les indices 2 soient inchangés.

    Si je comprend bien, l’astuce serait de récupérer les propriétés de chaque champ, de créer des nouveaux champs avec les mêmes propriétés mais des noms différents puis d’effacer les champs d’origine.

    Je perdrais je pense au passage les actions liés à ces champs. Mais ça ce n’est pas grave, les champs que je souhaite “renommer” ne seront pas des champs ayant des scripts.

    Merci

    • Cette réponse a été modifiée le il y a 1 mois et 4 semaines par michel c..
    #75233
    Merlin
    Maître des clés

    Bonjour

     

    Il te faut télécharger la version d’essai de Qoppa PDF Studio qui permet de renommer plusieurs champs de formulaire à la fois, des centaines si besoin.

    Comme cette version d’essai ajoute des filigranes l’astuce c’est de faire ça dans une copie du document PDF et ensuite de ramener les champs renommés dans le document original par copier-coller en ouvrant les 2 PDF avec Acrobat, ou avec PDF Expert.

    Pour trouver cette fonction il faut sélectionner plusieurs champs à la fois et faire un clic-droit dessus : Sequential renaming (Je ne l’ai pas en français).

     

     

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

    Nos messages se sont croisés (j’étais au téléphone avec un bavard).

    Sinon, bebarth a créé un utilitaire de renommage des champs, je pense qu’il va t’en parler.

    #75236
    michel c.
    Participant

    Bon j’avance à tâtons, ça marche très partiellement…

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

    bebarth doit être en vacances.

    J’ai retrouvé le sujet, le script y est en pièce jointe :

    Renommer plusieurs champs de formulaire avec JavaScript

    #75239
    michel c.
    Participant

    Je viens de tester pour modifier la première partie ou la 2ème au choix. Mais ça ne fonctionne toujours pas…

    Attachments:
    You must be logged in to view attached files.
    #75241
    michel c.
    Participant

    Je viens d’essayer le fichier proposé par BB mais ça ne fonctionne pas, j’ai une erreur à la ligne 12…

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

    “Je voulais renommer 30 champs : “Q.7.1” à “Q.7.30” qui se seraient appelés : “R.7.1″ à R.7.30”.”

    Il y a beaucoup plus simple qu’un script, c’est une astuce bien cachée dans Acrobat (je ne sais pas pour PDF Expert).

    Dans le panneau des champs il faut d’abord cliquer sur le bouton AZ pour afficher les champs dans l’ordre alphabétique.

    À partir de là il apparaissent sous forme d’une arborescence qu’on déplie en cliquant sur les flèches, ce sont les points dans les noms qui séparent chaque niveau.

    Il faut juste savoir qu’il suffit de double-cliquer sur un nom pour pouvoir renommer, on peut renommer la racine ou n’importe quel niveau en deux secondes. 😉

     

     

    Attachments:
    You must be logged in to view attached files.
    #75269
    michel c.
    Participant

    Je vais regarder si j’ai cette fonctionnalité dans pdf XChange. Mais si elle est cachée, alors elle est bien cachée…

    Merci en tout cas. Je vais continuer à bosser sur ce script je ne suis pas très loin d’y arriver je pense.

     

    #75271
    Merlin
    Maître des clés

    Sinon fais moi passer ton document, avec Acrobat j’en aurai pour 2 minutes.

    #75274
    michel c.
    Participant

    J’y suis arrivé pour la modification de la partie 1 du nom de champ (P1.P2.P3)

    Par contre mon script ne fonctionne pas quand je souhaite “modifier” la partie 2 P2. J’ai une erreur à la ligne 28…

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    #75277
    michel c.
    Participant

    Il y a un truc que je ne comprend pas. Mon script fonctionne mais il y a toujours un champ qui n’est pas renommé…

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

    “Par contre mon script ne fonctionne pas quand je souhaite “modifier” la partie 2 P2. J’ai une erreur à la ligne 28…”

    Vu le dernier exemple je crois que tu as compris l’erreur entre nom du script (qui importe peu) et nom de la fonction.

     

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

    “Il y a un truc que je ne comprend pas. Mon script fonctionne mais il y a toujours un champ qui n’est pas renommé…”

    Il est toujours très difficile d’examiner des scripts non commentés, même quand on sait ce qu’ils sont supposés faire.

    J’y jetterai un deuxième regard demain à tête reposée.

    #75283
    michel c.
    Participant

    Bonjour, je viens de commenter mon code :

    function Renommer_c() {

    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //déclarer la variable CaR (Champs à renommer)
    var CaR = this.getField("nom_champ").value;
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (this.getField("Menu").value == 1 && this.getField("Name.3.1").value == P1) {
    //déclarer la variable P1new (nouveau nom pour la partie 1)
    var P1new = this.getField("Name.3.2").value;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1new.P2.P3
    var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
    f.textSize=ts;
    f.textFont=tf;
    //interrompre le code si erreur
    }catch(e){break}
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    app.alert("Fait");
    }

    //Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
    if (this.getField("Menu").value == 2 && this.getField("Name.3.1").value == P2 && CaR == P1) {
    //déclarer la variable P2new (nouveau nom pour la partie 2)
    var P2new = this.getField("Name.3.2").value;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1.P2new.P3
    var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //interrompre le code si erreur
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)

    }

    }

    }

    Attachments:
    You must be logged in to view attached files.
    #75285
    michel c.
    Participant

    Étrange le fonctionnement de ce script :

    Lorsque je souhaite renommer la partie 1, il va fonctionner uniquement pour les 2nds indices (P3) ayant des valeurs paires.

    Lorsque je souhaite renommer la partie 2 ; même chose, ça fonctionne que pour les 2nds indices ayant des valeurs paires….

    #75291
    Merlin
    Maître des clés

    Je n’ai pas le temps de tout bien vérifier mais a priori le problème vient du nom des champs (this.getField(“Name.3.1”) et this.getField(“Name.3.2”)) qui sont utilisés dans le script en nom absolu.

    Comme ils rentrent dans la boucle leur nom est modifié pendant l’exécution de celle-ci et ça provoque des incohérences.

    Ça l’est moins quand on utilise P1 mais c’est flagrant quand on utilise P2, le retour de la Console est sans appel :

    TypeError: this.getField(…) is null
    12:Document-Level:Renommer_c

    (dans “Test-4.pdf”, ligne 12 du script sans commentaire, ou ligne 15 du script commenté, voir capture)

    Il faut donc soit les exclure de la boucle, soit modifier leurs noms de sorte qu’ils ne rentrent pas dans la boucle.

    Attachments:
    You must be logged in to view attached files.
    #75293
    michel c.
    Participant

    Merci pour la réponse.

    Pour palier à ce problème, j’ai déclaré 2 variables pour les valeurs des champs Name.3.1 et Name.3.2

    Le problème est résolu pour la modification de la partie 1 mais ça ne change rien lorsque je séléctionne P2…

    function Renommer_c() {

    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //déclarer les variables
    var aN = this.getField("Name.3.1").value;
    var nN = this.getField("Name.3.2").value
    var CaR = this.getField("nom_champ").value;
    var Menu = this.getField("Menu").value;
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (Menu == 1 && aN == P1) {
    //déclarer la variable P1new (nouveau nom pour la partie 1)
    var P1new = nN;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1new.P2.P3
    var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
    //app.alert("Champ ajouté : "+P1new+"."+P2+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    //interrompre le code si erreur
    }catch(e){break}
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    //app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
    }

    //Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
    if (Menu == 2 && aN == P2 && CaR == P1) {
    //déclarer la variable P2new (nouveau nom pour la partie 2)
    var P2new = nN;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1.P2new.P3
    var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
    //app.alert("Champ ajouté : "+P1+"."+P2new+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //interrompre le code si erreur
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    //app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
    }

    }

    }

    Attachments:
    You must be logged in to view attached files.
    #75295
    michel c.
    Participant

    Non en fait ça ne marche toujours pas même lorsque je sélectionne P1

    #75296
    bebarth
    Maître des clés

    bonjour,
    J’ai mixé ton script avec le mien répondre rapidement à ton problème.

    function Renommer_c() {
    var anciensChamps=[];
    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //déclarer les variables
    var aN = this.getField("Name.3.1").value;
    var nN = this.getField("Name.3.2").value
    var CaR = this.getField("nom_champ").value;
    var Menu = this.getField("Menu").value;
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (Menu == 1 && aN == P1) {
    //déclarer la variable P1new (nouveau nom pour la partie 1)
    var P1new = nN;
    anciensChamps.push(P1+"."+P2+"."+P3);
    renommerChamp (P1+"."+P2+"."+P3,P1new+"."+P2+"."+P3);
    }

    //Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
    if (Menu == 2 && aN == P2 && CaR == P1) {
    //déclarer la variable P2new (nouveau nom pour la partie 2)
    var P2new = nN;
    anciensChamps.push(P1+"."+P2+"."+P3);
    renommerChamp (P1+"."+P2+"."+P3,P1+"."+P2new+"."+P3);
    }
    }
    for (var j=0; j<anciensChamps.length; j++) this.removeField(anciensChamps[j]);
    }
    function renommerChamp (leNom,nouveauNom) {
    try {
    g = this.getField(leNom);
    var leType=g.type;
    var laPage=String(g.page);
    var lesPages=laPage.split(",");
    for (var p=0; p<lesPages.length; p++) {
    var cettePage=Number(lesPages[p]);
    if (lesPages.length>1) {
    var nomChamp=leNom+"."+p;
    } else {
    var nomChamp=leNom;
    }
    g=this.getField(nomChamp);
    var lesCoord=g.rect;
    var f = this.addField(nouveauNom, leType, cettePage, lesCoord);
    f = this.getField(nouveauNom);
    for (var j in g) {
    try {
    if (typeof g[j] != "function" && j != "name" && j != "type" && j != "page" && j != "rect") {
    f[j]=g[j];
    }
    } catch(e) {}
    }
    if (leType=="combobox" || leType=="listbox") {
    var liste=new Array();
    for (var k=0; k<g.numItems; k++) {
    var valeur = g.getItemAt(k,false);
    var valeurExport = g.getItemAt(k,true);
    if (valeur==valeurExport) valeurExport="";
    var element=[valeur,valeurExport];
    liste.push(element);
    }
    f.setItems(liste);
    f.currentValueIndices=g.currentValueIndices;
    }
    if (leType=="button") {
    f.buttonSetIcon(g.buttonGetIcon());
    f.buttonSetCaption(g.buttonGetCaption());
    }
    }
    } catch(e) {app.alert("\nLe champ \""+leNom+"\"\rn'existe pas dans ce document.")}
    }

    @+
    😎

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

    …en gros lorsque tu ajoutes un nouveau champ et que tu effaces l’ancien immédiatement cela modifie la numérotation des champs c’est pourquoi ils ne sont pas tous remplacés.
    Alors que si tu rajoutes des champs sans supprimer les anciens immédiatement, la numérotation reste identique avec de nouveaux numéros à la fin. il faut donc créer tous les nouveaux avant de supprimer tous les anciens !

    Ai-je été compréhensible ???

    @+
    😎

    #75299
    Merlin
    Maître des clés

    J’ai passé un bon moment à chercher… et il me semblait bien qu’il y avait comme une évidence que je ne voyais pas !

    😉

    #75300
    michel c.
    Participant

    J’ai parfaitement compris. Mon code fonctionne parfaitement pour l’ajout des nouveaux champs. Par contre, je ne sais pas ou placer le code pour retirer les anciens…

    J’ai testé en dehors des boucles try/catch mais ça ne fonctionne pas.

    J’en ai profité pour optimiser un peu le script.

    Il y a un truc que je souhaiterais faire également :

    Si l’option P1 est sélectionnée et que la partie 1 du champ P1 = Q, je souhaiterais que les nouveaux champs crées soient placés au dessus des anciens (hauteur augmentée de la hauteur du champ) mais je ne sais pas si c’est faisable…

     

    Merci

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

    bonjour,
    Voici les lignes pour pouvoir supprimer les anciens champs avec ton script :

    function Renommer_c() {
    var anciensChamps=[];
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var Menu = this.getField("Menu").value;
    var CaR = this.getField("nom_champ").value;
    var an = this.getField("AN").value;
    var P1new = this.getField("NN").value;
    var P2new = this.getField("NN").value;
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    if (Menu == 1 && an == P1) {
    try{
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
    anciensChamps.push(P1+"."+P2+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //this.removeField(P1+"."+P2+"."+P3)
    }

    if (Menu == 2 && an == P2 && CaR == P1) {
    try{
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
    anciensChamps.push(P1+"."+P2+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //this.removeField(P1+"."+P2+"."+P3)
    //app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
    }

    }
    for (var j=0; j<anciensChamps.length; j++) this.removeField(anciensChamps[j]);
    }

    Ton script fonctionne correctement, par contre il ne duplique pas toutes les propriétés. Tu devrais plutôt t’inspirer du miens…

    Pour ce qui est de ton autre problème ce n’est pas très compliqué, il suffit de créer le nouveau champ juste au dessus de l’ancien et de ne pas l’insérer dans la table des champs à supprimer si son nom est “Q”. J’essayerai de te faire ça demain !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #75304
    michel c.
    Participant

    Merci, effectivement ton script (test-6_BB.pdf) fonctionne bien mieux, je vais partir de cette base. Avec l’ancien, si les champs étaient de type liste déroulante, ils devenaient des champs textes après exécution du script.

    Merci beaucoup.

    J’essayerai demain de faire la petite modif que je souhaite

    #75318
    michel c.
    Participant

    J’ai un autre souci….

    Je compte me servir de ce fichier pour pouvoir créer plus rapidement des cours ou exercices “interactifs”

    Grosso modo, j’ai des champs que les élèves doivent remplir. Ces champs sont les champs Q.a.b

    Lorsque l’élève clique sur vérifier, la valeur de ces champs sont comparées à des champs R.a.b Si les valeurs sont identiques, alors la réponse est validée.

    Jusqu’à présent, lorsque je crée mon document, je crée les champs Q.a.b puis je les copie et je renomme leurs copies une à une Q.a.b sera renommé en R.a.b

    L’avantage de ce fichier est d’importer les champs Q.a.b et de les renommer en R.a.b en un seul clic.

    Cela fonctionne très bien lorsque les champs sont de type texte, mais lorsqu’il s’agit de menus déroulants, quand je place les fichiers crées par le script, les réponses ne sont plus valides même lorsque les mêmes items ont été choisis pour les champs Q.a.b et R.a.b

    J’espère que ce n’est pas trop confus.

     

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

    Dans renommer_champs_v01.pdf il n’y a pas de champs à renommer, et exercice_interactif-ok.pdf n’a pas été transféré car trop lourd.

    Du coup on ne peut pas tester.

    🙁

    #75321
    Merlin
    Maître des clés

    Michel C. très franchement j’admire ce que tu fais, à double titre.

    D’une part le côté apprentissage technique du PDF-JavaScript et ses à cotés, et d’autre part la passion pédagogique et le cœur que tu mets à transmettre le savoir à tes élèves en utilisant des technologies qui les intéressent*.

    Bravo et joyeuses fêtes (sans élèves).

     

    *J’imagine que parmi tes élèves il y a un groupe de petits malins qui cherchent à cracker tes documents, si ça trouve il y en a d’inscrits sur ce forum ! 😉

    #75324
    michel c.
    Participant

    C’est curieux, j’ai essayé 2 fois de poster une réponse mais elle n’apparaît pas…A la 3ème tentative, j’ai ce message :

    Erreur : réponse identique détectée ; il semble que vous l’ayez déjà dit.

    Mais je ne vois pas ma réponse sur le forum.

    Sinon, la voici en pièce jointe dans un pdf…

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

    bonjour,
    …et pareil que Merlin : félicitations pour ce que tu fais !

    Je n’ai pas bien suivi ces derniers jours, du coup tu en es où dans tes demandes ?
    Si tu peux me repréciser ! Merci.

    @+
    😎

    #75332
    bebarth
    Maître des clés

    Je vais faire une petite vidéo si c’est trop confus…

    Je veux bien car je ne suis pas certain de comprendre !

    @+
    😎

    #75333
    michel c.
    Participant

    Merci.

    Voici une vidéo montrant le problème : Vidéo

    #75334
    michel c.
    Participant

    Sinon pour résumer, lorsque je crée mes listes déroulantes Q.a.b (celles que les élèves vont utiliser pour saisir leurs réponses) je dois créer ensuite des listes R.a.b contenant les réponses exactes. Je copie colle les champs Q.a.b et je les renommais ensuite une à une en R.a.b

    Lorsque je passe par le fichier renommer_champs_v01.pdf, 

    les listes sont renommées convenablement mais lorsque je copie-colle les champs R.a.b dans mon exercice interactif, le script de vérification qui compare les valeurs des champs Q.a.b avec R.a.b détecte toutes les réponses comme fausses alors que leurs valeurs sont les mêmes…

    Attachments:
    You must be logged in to view attached files.
    #75336
    michel c.
    Participant

    J’ai régulièrement des messages qui sont supprimés par le site. Peut-être que les liens vers mon site internet ne sont pas acceptés… Je passe par mon site pour poster des fichiers trop lourds. S’il faut passer par un hébergeur, par lequel dois-je passer?

    Merci

    #75337
    Merlin
    Maître des clés

    Je n’ai pas trop de temps en ce moment car comme d’habitude tous les clients ont des urgences avant les vacances.

    J’essaierai de trouver un peu de temps ce weekend.

    En tout cas j’ai regardé ta vidéo et l’interface de PDF Expert m’a fait baver, tout est disponible directement à un seul clic dans le panneau des propriétés. Ça change d’Acrobat et de son interface des années 90 qui impose d’ouvrir plusieurs boites pour modifier une propriété !

     

    “S’il faut passer par un hébergeur, par lequel dois-je passer?”

    Voir : https://www.abracadabrapdf.net/forums/topic/envoyer-partager-poster-une-piece-jointe-volumineuse/

     

     

    #75338
    bebarth
    Maître des clés

    bonjour,
    J’ai beaucoup mieux compris avec ta vidéo, et du coup je me suis aperçu qu’il y avait une erreur dans mon script (pour les menus déroulants et les listes).
    Il faut supprimer une ligne de script :
    ...
    if (leType=="combobox" || leType=="listbox") {
    var liste=new Array();
    for (var k=0; k<g.numItems; k++) {
    var valeur = g.getItemAt(k,false);
    var valeurExport = g.getItemAt(k,true);
    //       <----- Suppimer cette ligne
    var element=[valeur,valeurExport];
    liste.push(element);
    }
    f.setItems(liste);
    f.currentValueIndices=g.currentValueIndices;
    }
    ...
    Je ne me souviens pas pourquoi je l’avais mise !!! Peut-être pour une application spécifique.
    En tout cas cela fonctionne beaucoup mieux maintenant…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #75349
    michel c.
    Participant

    Merci !

    ça marche parfaitement

    #75350
    bebarth
    Maître des clés

    bonjour,
    Tu pourrais aussi faire ça dans le même fichier !
    function Renommer_c() {
    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);
    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (P1=="Q") {
    try {
    this.removeField("R."+P2+"."+P3);
    } catch(e) {};
    renommerChamp ("Q."+P2+"."+P3,"R."+P2+"."+P3);
    }
    }
    }
    function renommerChamp (leNom,nouveauNom) {
    try {
    g = this.getField(leNom);
    var laValeur=g.value;
    var leType=g.type;
    var laPage=String(g.page);
    var lesPages=laPage.split(",");
    for (var p=0; p<lesPages.length; p++) {
    var cettePage=Number(lesPages[p]);
    if (lesPages.length>1) {
    var nomChamp=leNom+"."+p;
    } else {
    var nomChamp=leNom;
    }
    g=this.getField(nomChamp);
    var lesCoord=g.rect;
    var lesAutresCoord=[lesCoord[0],lesCoord[1]+30,lesCoord[2],lesCoord[3]+30];
    var f = this.addField(nouveauNom, leType, cettePage, lesAutresCoord);
    f = this.getField(nouveauNom);
    for (var j in g) {
    try {
    if (typeof g[j] != "function" && j != "name" && j != "type" && j != "page" && j != "rect") {
    f[j]=g[j];
    }
    } catch(e) {}
    }
    f.strokeColor=["RGB",0,147/255,0];
    f.fillColor=color.white;
    //f.display=display.hidden;
    if (leType=="combobox" || leType=="listbox") {
    var liste=new Array();
    for (var k=0; k<g.numItems; k++) {
    var valeur = g.getItemAt(k,false);
    var valeurExport = g.getItemAt(k,true);
    var element=[valeur,valeurExport];
    liste.push(element);
    }
    f.setItems(liste);
    f.currentValueIndices=g.currentValueIndices;
    }
    if (leType=="button") {
    f.buttonSetIcon(g.buttonGetIcon());
    f.buttonSetCaption(g.buttonGetCaption());
    }
    }
    } catch(e) {app.alert("\nLe champ \""+leNom+"\"\rn'existe pas dans ce document.")}
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #75352
    michel c.
    Participant

    Je n’osait pas le demander…C’est magique. Tu as même fait en sorte de ne pas re-créer les champs R.a.b s’ils sont déjà présents…

    Je n’ai plus qu’à intégrer ça au menu admin. Mais ça je sais faire.

    Un grand merci, ça va me faire gagner un temps précieux.

    #75353
    bebarth
    Maître des clés

    Tu as même fait en sorte de ne pas re-créer les champs R.a.b s’ils sont déjà présents…

    Dans mon script les champs R.a.b sont effacés s’ils existent (d’où le try) :
    try {
    this.removeField("R."+P2+"."+P3);
    } catch(e) {};
    avant d’être re-créés :
    renommerChamp ("Q."+P2+"."+P3,"R."+P2+"."+P3);

    @+
    😎

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