Donnez vie à vos documents numériques !
 

Merlin

Toutes mes réponses sur les forums

Affichage de 99 réponses de 199 à 297 (sur un total de 10,362)
  • Auteur
    Réponses
  • en réponse à : Not Allowed – Script #74722
    Merlin
    Maître des clés

    Les pages modèles masquées n’augmentent pas vraiment le poids du PDF mais effectivement une page modèle visible est définitivement supprimée du document. (Acrobat Reader ne peut supprimer que des pages modèles, il ne peut pas supprimer de “vraies” pages).

    L’avantage de la page masquée quand elle est générée/dupliquée c’est que les données saisies dans les champs de formulaire sont en double : dans la page visible et dans la page masquée. Donc quand l’utilisateur change d’avis il peut retrouver les données déjà saisies quand il re-génère une page précédemment supprimée.

    Sauf si on utilise le paramètre “bRename” qui renomme les champs dans la (les) page(s) générée(s), ce qui est indispensable quand on génère plusieurs pages à partir du même modèle.

    en réponse à : Not Allowed – Script #74714
    Merlin
    Maître des clés

    PS à propos de la QuickBar : attention quand même car la documentation est farcie d’erreurs…

    en réponse à : Not Allowed – Script #74712
    Merlin
    Maître des clés

    On peut dupliquer une page template qu’elle soit masquée ou apparente, ça ne change rien. Il faut seulement que ladite page soit enregistrée comme template.

     

    La QuickBar, ou Table Quick Key :

    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/index.html#table-quick-key

    Voir aussi la capture ci-dessous.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Not Allowed – Script #74709
    Merlin
    Maître des clés

    Bonjour

     

    “createTemplate” et “removeTemplate” ne peuvent fonctionner que depuis la console ou depuis une action (batch), et que avec Acrobat Pro (ou Standard).

    Pour que ça fonctionne avec Reader il faudrait que le document ait des droits étendus (Extended Rights) mais pas ceux qu’on peut activer avec Acrobat Pro, il faut ceux d’un niveau supérieur qu’il faut acheter (cher) chez Adobe.

     

    L’astuce serait donc de créer les templates d’avance, utiliser la fonction “spawn” pour ajouter des pages et la fonction “deletePage” pour les supprimer.

    en réponse à : Caractères avec accents dans les menus #74704
    Merlin
    Maître des clés

    S’as pas vis l’Ardecho, n’as jamaï rein vis.

    en réponse à : Caractères avec accents dans les menus #74699
    Merlin
    Maître des clés

    D’ailleurs c’est bien la preuve qu’il y a de la vie sur Mars.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Caractères avec accents dans les menus #74697
    Merlin
    Maître des clés

    Jean-Claude j’ai pensé à toi hier, je suis allé sur Mars (Ardèche, France) et je suis passé par le hameau de Montréal. Il y a un Montréal Haut et un Montréal Bas.

    Il y a d’ailleurs plusieurs Montréal en Ardèche et en France.

    😉

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : mailDoc et Share #74696
    Merlin
    Maître des clés

    Bonjour

    Tout dépend de ce qu’on appelle “signature”, en général c’est juste du texte placé à la fin du corps du message. Bien entendu si tu veux y mettre une image ça risque d’être compliqué…!

    Concernant la deuxième solution je n’ai pas d’info mais fait bien attention au contexte d’utilisation, car comme son nom le laisse supposer “app.execMenuItem” est complètement dépendant de l’item de menu. S’il n’existe plus ou s’il a changé de nom ça ne fonctionne pas, c’est donc dépendant de la version d’Acrobat et c’est donc imprévisible. D’autant qu’en ce moment avec la nouvelle interface ça change souvent.

    Sachant aussi que Acrobat Pro, Standard et Reader n’ont pas les mêmes menus.

     

    en réponse à : Caractères avec accents dans les menus #74693
    Merlin
    Maître des clés

    Salut

     

    La réponse c’est oui et non.

    Comme on peut le voir dans la capture jointe ça ne fonctionne qu’au premier niveau du menu (Compteur de caractères) mais pas dans les niveaux suivants.

    Comme bebarth je me suis souvent cassé la tête pour trouver des homonymes sans accents, et comme on le voit sur la capture, la mort dans l’âme j’ai du mettre “A propos…” sans l’accent sur le À.

    C’est un bug que j’ai signalé plusieurs fois à Adobe (et je ne suis pas le seul car dans certaines langues c’est encore plus pénalisant) depuis plus de 15 ans mais à l’évidence ils n’en ont rien à faire.

    🙁

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Sinus pour baïonnette #74679
    Merlin
    Maître des clés

    Je crois qu’il va falloir attendre que bebarth rentre de vacances, je suis trop nul en math pour pouvoir t’aider.

    en réponse à : PDF Formulaire-calcul #74677
    Merlin
    Maître des clés

    Bonjour

     

    Le script de calcul n’est pas compliqué à faire mais pour ça il est nécessaire que la colonne “Coef” soit constituée de champs de formulaire car JavaScript ne peut pas aller chercher des données dans le fond de page (layout).

    Chaque champ “Coef” doit contenir le coefficient en “valeur par défaut”, et tous les champs “Coef” doivent être nommés et numérotés de façon logique et séquentielle, comme les listes déroulantes.

    Il est aussi nécessaire que la numérotation des champs Coef corresponde à celle des listes en fonction des rangées : “coef1” à coté de “Liste déroulante1”, “coef2” à coté de “Liste déroulante2”, etc.

    Je te laisse faire ça et poster ton PDF pour que je puisse ensuite écrire le script.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Sinus pour baïonnette #74663
    Merlin
    Maître des clés

    Bonjour

     

    Mes compétences en math se limitent aux 4 opérations de base, donc je ne peux pas t’aider.

    Par-contre tu devrais activer la Console et le debug car dans ton document il y a un des calculs qui utilise un champ qui n’existe pas :

    TypeError: getField(...) is null
    1:Field:Calculate

    en réponse à : Findchangebylist espace dernier paragraphe #74662
    Merlin
    Maître des clés

    Bonjour

     

    J’avais complètement raté ce message mais la réponse est non : je n’arrive pas à reproduire ce problème.

     

    en réponse à : Script de validation de formulaire #74657
    Merlin
    Maître des clés

    Dans ce cas, comme pour les contours, il faut gérer ça avec JavaScript en ajoutant ce script en action “Champ désactivé” (onBlur) :

    if (event.target.value == event.target.defaultValue) {event.target.fillColor = color.ltGray;}
    else {event.target.fillColor = color.transparent;}

    Tu peux bien entendu changer les couleurs de cet exemple, voir : https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#color-arrays

    Fichier joint.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de validation de formulaire #74649
    Merlin
    Maître des clés

    C’est certainement parce que la surbrillance est activée, ajoute cette ligne dans le script de document pour la désactiver :

    app.runtimeHighlight = false;

     

    Ou bien dans les Préférences (voir capture).

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de validation de formulaire #74647
    Merlin
    Maître des clés

    C’est déjà le cas, dans le fichier que j’ai posté les champs obligatoires non remplis sont signalés par un contour rouge quand on clique sur le bouton.

    Et ce contour rouge disparaît quand on clique sur les champs, donc on ne peut pas en oublier.

     

    Ça fonctionne à l’identique dans le fichier que tu as posté car c’est le même, sauf que les champs n’ont pas été cliqués et ont gardés leur contour rouge.

    en réponse à : Impression PDF #74646
    Merlin
    Maître des clés

    Bonjour

     

    Pour qu’on puisse t’aider il faudrait connaitre les dimensions du document, les dimensions du papier sur lequel il doit être imprimé, et surtout le logiciel utilisé pour l’imprimer.

    Le plus simple serait bien entendu de partager le document dans ce forum, en pièce jointe ou via un lien.

    en réponse à : Créer un lien vers une base de donnés en ligne #74639
    Merlin
    Maître des clés

    Dans le temps c’était possible et simple via ADBC, qui n’est plus supporté depuis Acrobat 9.

    Il me semble (à vérifier, la mémoire est faible) que c’est toujours possible aujourd’hui mais il y a tellement de contrainte de sécurité que ça ne peux fonctionner que dans un environnement fermé et maîtrisé.

    Il faudrait demander à Thom Parker, ou chercher sur son site, si quelqu’un connaît la réponse c’est lui.

    en réponse à : Générateur liste déroulantes #74593
    Merlin
    Maître des clés

    Fait attention au fait que déclarer une variable en commençant par “var = ” signifie que c’est une variable locale, uniquement accessible dans la boucle ou dans la fonction dans laquelle elle a été créée.

    Contrairement à la déclaration sans “var = ” qui en fait une variable globale.

    en réponse à : Générateur liste déroulantes #74588
    Merlin
    Maître des clés

    Chapeau !

     

    Merlin
    Maître des clés

    Bonjour

     

    Acrobat, Foxit et quelques autre savent faire la reconnaissance de caractères dans les images, mais pas leur traduction.

    Il faudrait chercher du côté des traducteurs automatiques.

    en réponse à : Multiliste déroulante #74562
    Merlin
    Maître des clés

    Est-ce que ce document est seulement pour toi ou doit-il être diffusé après d’autres utilisateurs ?

    En clair est-ce qu’il devra fonctionner seulement avec Acrobat Pro ou aussi avec Acrobat Reader ?

    Dans le deuxième cas il faudra changer de script car modeles.hidden ne fonctionne pas avec Acrobat Reader.

    en réponse à : Multiliste déroulante #74553
    Merlin
    Maître des clés

    Mon vieil Acrobat 9 ne parle plus Français car il a perdu le réglage dans ses Préférences, mais ça se trouve au même endroit dans les menus : “Modèles de pages” en VF.

    Ensuite il faut cliquer sur l’icône œil pour afficher/masquer la page correspondante.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Assistant d’actions pour remplir en javascript #74552
    Merlin
    Maître des clés

    Oui, surtout pas de retour de ligne ni aucun séparateur, juste la chaine de caractères.

    en réponse à : Assistant d’actions pour remplir en javascript #74547
    Merlin
    Maître des clés

    je n’arrive pas à faire fonctionner la fonction add.script. Cela me met une erreur de ) à la ligne 1 à chaque tentative

    Le premier point-virgule est peut-être de trop, essayez comme ça :

    this.addScript("init", "app.beep(0)");

    en réponse à : Multiliste déroulante #74536
    Merlin
    Maître des clés

    As tu transformé la deuxième page en “template”, ou “page modèle” ?

    en réponse à : Action si champ existe #74531
    Merlin
    Maître des clés

    Bonjour

    var nomChamp = this.getField("Question."+nextQuest);
    if (nomChamp != null) {nomChamp.display = display.noPrint;}

    en réponse à : Assistant d’actions pour remplir en javascript #74529
    Merlin
    Maître des clés

    Waou !

    en réponse à : Assistant d’actions pour remplir en javascript #74522
    Merlin
    Maître des clés

    Pour un script de document il faut utiliser la fonction “addScript”.

    Dans l’exemple ci-dessous on suppose que le nom du script de document à remplacer est init et que le code à remplacer est app.beep(0);

    this.addScript("init", "app.beep(0);");

    S’il y a, comme je le suppose, plusieurs lignes de code à remplacer il faut préalablement convertir tout le code JavaScript en Texte (txt) avant de le placer entre les guillemets.

    C’est à dire le convertir en une seule chaîne de caractères (string).

    Ce qui peut se faire via ce site : https://algodaily.com/convert/js/text

    Attention : “addScript” remplace tout le code existant sans faire le détail, il faut donc remettre tout le code en entier même s’il n’y a qu’une virgule à changer.

    Voir : https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#addscript

     

    Ensuite il faut emballer ce script dans une Action (voir capture).

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Assistant d’actions pour remplir en javascript #74517
    Merlin
    Maître des clés

    Bonjour

     

    La réponse est oui mais il faut savoir de quel type de script il s’agit.

    Script de document, script d’objet, script de page, … (voir https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/ )

    en réponse à : Vérification #74512
    Merlin
    Maître des clés

    Bonjour, j’ai testé, ça ne fonctionne pas. J’ai déplacé la parenthèse mal placée à la ligne 4 : if (this.getField(“R.1.” + i) === null) mais j’ai une erreur à la ligne 5 : app.alert(“Le champ ” + this.getField(“R.1.” + i).name + ” n’existe pas.”);

    Doc:Open:5: TypeError: this.getField(…) is null

    Mea culpa, je n’avais pas vérifié. Il faut placer le nom du champ en variable.

    en réponse à : Multiliste déroulante #74504
    Merlin
    Maître des clés

    Il faut remplacer le script de bebarth par celui que j’ai posté ci-dessus.

    Dans les Propriétés de la case : onglet Actions (voir la capture ci-dessus).

    en réponse à : Vérification #74499
    Merlin
    Maître des clés

    Dans ce cas tu peux reprendre mon script ci-dessus à l’inverse :

    for (var i=0; i<this.numFields; i++) {
    if (this.getField("R.1." + i)) === null { // si le champ n'existe pas
    app.alert("Le champ " + this.getField("R.1." + i).name + " n'existe pas.");

    break;
    }
    }

     

    en réponse à : Multiliste déroulante #74497
    Merlin
    Maître des clés

    Bonjour

     

    1. Il faut “emballer” le script de bebarth (orange) dans une condition qui vérifie la valeur de toutes les listes déroulantes de la page 1 :

    var nCompt = 0;

    for (var i=0; i<this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    if (oFld != null && oFld.type == "combobox" && oFld.page === 0 && oFld.value === oFld.defaultValue)
    {nCompt = nCompt +1;}
    }

    if (nCompt === 0) {
    var modeles=this.templates;
    for (i=0; i<modeles.length; i++) {
    if (modeles.name=="page2") {
    modeles.hidden=(event.target.value=="Off");
    break;
    }
    }
    this.pageNum=0;
    }

     

    2. Voir capture ci-jointe

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74491
    Merlin
    Maître des clés

    Désolé, je n’ai pas tout suivi ci-dessus, mais dans ce cas je crois qu’il vaut mieux rester sur ton idée et sur les propositions de bebarth.

    en réponse à : Vérification #74488
    Merlin
    Maître des clés

    Que l’on peut simplifier ainsi :

    for (var i=0; i<this.numFields; i++) {
    if (this.getField("R.1." + i)) { // si le champ existe
    this.getField("R.1." + i).value // code à exécuter
    }
    }

    en réponse à : Vérification #74487
    Merlin
    Maître des clés

    Plutôt que de lister les champs éventuellement manquants et de compliquer la vie de l’utilisateur est-ce qu’il ne serait pas plus simple de faire en sorte que le script les ignore (sans rien dire à l’utilisateur) ?

    Par exemple :

    for (var i=0; i<this.numFields; i++) {
    if (this.getField("R.1." + i) != null) { // si le champ existe
    this.getField("R.1." + i).value // code à exécuter
    }
    }

    en réponse à : Couleur des champs et impression #74473
    Merlin
    Maître des clés

    Bonjour

     

    La couleur bleue des champs de formulaire c’est comme la petite cuillère dans Matrix : elle n’existe pas.

    C’est une couleur virtuelle de surbrillance dont l’affichage dépend du réglages des Préférences de chaque utilisateur (Préférences : Formulaire : Couleur de surbrillance).

    Pour forcer son affichage en outrepassant les Préférences de l’utilisateur il faut placer ce script en “script de document” (qui s’exécute à l’ouverture du formulaire) :

    app.runtimeHighlight = true;

     

    Pour ne pas imprimer la vraie couleur des champs, qu’elle soit grise ou autre c’est simple : il ne faut pas leur mettre de couleur de fond (transparent) ou bien leur mettre une couleur de fond blanche (si le fond de page est blanc).

    Sachant que toute façon la couleur de fond des champs ne sert à rien quand la surbrillance est activée puisqu’elle la masque.

    en réponse à : Extraire un indice #74457
    Merlin
    Maître des clés

    Bonjour

     

    Le principe :

    // mettre la chaine de caractères en variable
    cTexte = "Aide.12.33";
    // découper la chaine de caractères sur les points qu'elle contient
    // ce qui la transforme en array
    aTexte = cTexte.split(".");
    // l'array "aTexte" comporte donc 3 éléments numérotés de zéro à 2,
    // 1 étant donc celui du milieu
    console.println(aTexte[1]);

     

    Donc ton script devrait ressembler à ça :

    var nomChamp = this.getNthFieldName(i);
    var b = nomChamp.split(".");
    if (Number(b[1]) > 0) {....action à exécuter...}

     

    Number() sert à convertir l’élément chaine de caractères (string) de l’array en chiffre (Number) pour qu’il soit évalué correctement par l’opérateur >

    en réponse à : Vérification #74436
    Merlin
    Maître des clés

    Lors de l’exécution de la fonction, il me détecte le champ RepOpi en double sur les pages 1 et 2 mais il n’y en a pas sur la page 2.

    Assure toi que le nom de champ “RepOpi” soit bien écrit avec un “o” et non pas avec un “zéro”, ça m’a déjà joué des tours par le passé.

     

    en réponse à : Liste déroulante multilignes #74429
    Merlin
    Maître des clés

    Exemple ci-joint, le script est dans la liste déroulante (Validation).

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante multilignes #74426
    Merlin
    Maître des clés

    Oui c’est possible.

    Mais il faut d’abord savoir si la liste doit faire apparaitre le texte toujours au même endroit dans le même champ, ou si elle doit le faire apparaitre à des endroits différents sur la page.

    Ce serait plus facile de répondre si tu joignais un PDF “maquette” de ce que tu veux faire.

    en réponse à : Vérification #74425
    Merlin
    Maître des clés

    Maintenant je vais essayer de transformer la valeur this.getField(nomChamp).page pour que la numérotation commence à 1 et non pas à 0.

    Je n’ai peut-être pas bien compris la problématique mais je crois qu’il serait plus simple de faire commencer la boucle à 1 au lieu de zéro :

    for (var i=1; i<this.numFields; i++) {…

    en réponse à : Liste déroulante multilignes #74419
    Merlin
    Maître des clés

    Bonjour

     

    Je crois que tu n’as pas compris l’exemple.

    \rsur 2 lignes” n’est pas une commande (pas plus que “\rsur 4 lignes“).

    C’est un texte d’exemple pour un item dont le contenu serait “Élement sur 2 lignes“.

    Ce qui force la coupure de la ligne c’est “\r“,  avec un “r” comme dans Return, ou Retour (de ligne).

    Donc dans le script ton texte devrait plutôt ressembler à ça (avec trois “\r“)  :

    "Conformément aux conditions de travail régissant le personnel non syndiqué,\rvous bénéficierez d’une période d’essai d’une durée de soixante (60) jours ou\rquarante-cinq (45) jours ouvrables pendant lesquels vous vous présenterez au travail.\rCette période sera prolongée d’un nombre de jours égal au nombre de jours d’absence."

    Mais ne perd pas de vue qu’une liste déroulante est faite pour afficher des items courts, pas pour afficher un roman.

    😉

    en réponse à : Multiliste déroulante #74412
    Merlin
    Maître des clés

    Il est possible de placer les données dans le code JavaScript mais ça les rendrait difficilement actualisables.

    On peut éventuellement chiffrer le code JavaScript mais ça dépend à qui le document est destiné car on retombe dans le problème évoqué ci-dessus : un PDF contenant du code chiffré est systématiquement rejeté par les antivirus, qui empêchent donc son ouverture ou son téléchargement.

    en réponse à : Vérification #74408
    Merlin
    Maître des clés

    Bonjour

     

    Installe le module “FormReport” des abracadabraTools et essaie le, il est fort possible qu’il réponde à ta demande.

    abracadabraTools

    en réponse à : Multiliste déroulante #74406
    Merlin
    Maître des clés

    “D’autre question s’ils vous plait, serait-il possible masquer les pièces jointes (excel.csv) pour que les autres utilisateurs de ce fichier pdf ne pourront pas accéder au pièces jointes, et ils n’auront donc pas la possibilité de les modifier?”

    La réponse est non.

    Sécurité oblige, si c’était possible tous les antivirus rejetteraient le fichier car il serait soupçonné d’être malicieux.

    en réponse à : Multiliste déroulante #74380
    Merlin
    Maître des clés

    Bonjour et bienvenue

     

    Il n’y a qu’un seul PDF en pièce jointe, et dedans il n’y a pas de menu déroulant “Chez moi/absent” ni de menu déroulant “chaîne”, ça n’aide pas à la compréhension de ce que tu veux faire.

     

    Dans un PDF plusieurs champs qui ont exactement le même nom partagent leurs données. En clair ils affichent la même chose et en modifier un seul revient à les modifier tous en même temps.

    Donc en fait ton PDF ne contient que 3 champs : canal, départ et arrivée.

     

    Pour remplir de nombreux champs automatiquement avec un script il faut qu’ils utilisent une règle de nommage cohérente pour qu’une boucle puisse fonctionner. Par exemple : canal.0, canal.1, canal.2, canal.3, etc.

    En général dans les PDF on utilise le point comme séparateur dans le nom des champs pour les raisons qui sont expliquées ici, ainsi que la méthode la plus simple pour les créer : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

     

    Si tu veux que tes champs fonctionne correctement il faut les nommer en respectant la syntaxe web : pas de slash, pas d’accent, pas d’espace, ni aucun caractère spécial.

     

    Concernant la deuxième question, c’est possible mais ce n’est pas quelque chose de simple à faire pour un débutant. D’autant que ton PDF contient 3 pages.

    Fait une recherche sur “template” et sur “page modèle” dans ce forum pour bien comprendre de quoi il s’agit.

     

    en réponse à : Position des champs #74352
    Merlin
    Maître des clés

    Le plus simple serait non pas de changer les champs de place mais plutôt de changer leur contenu.

    Ce qui pourrait permettre de placer questions et réponses dans un fichier tableur, et donc de faciliter les mises à jour ou modifications.

    Qu’en penses tu ?

    en réponse à : Centrage automatique d’un champ #74338
    Merlin
    Maître des clés

    Moi qui utilise une méthode rustique depuis des années pour centrer mes champs je vais m’empresser d’enregistrer ça en Action ou en outil rapide.

    Merci bebarth !

    en réponse à : Condition sur 1ère ligne #74323
    Merlin
    Maître des clés

    PS : je viens de tester avec ton document, ça fonctionne.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Condition sur 1ère ligne #74322
    Merlin
    Maître des clés

    En ajoutant une ligne et une variable ça devrait fonctionner :

     

    var Quest = this.getField("NoQuest").value;
    for (var i = 1; i < 41; i++) {
    var sListe = "?\r" + this.getField("entreesListe").value;
    this.getField("Q."+Quest+"."+i).setItems(sListe.split(/[\r\n]+/g));
    }

     

    Le même avec le ? écrit en Unicode :

    var Quest = this.getField("NoQuest").value;
    for (var i = 1; i < 41; i++) {
    var sListe = "\u003F\r" + this.getField("entreesListe").value;
    this.getField("Q."+Quest+"."+i).setItems(sListe.split(/[\r\n]+/g));
    }

    en réponse à : Condition sur 1ère ligne #74320
    Merlin
    Maître des clés

    Dans ce cas c’est différent.

    Mais j’aurais tendance à inverser la procédure : plutôt que de tenter de forcer l’utilisateur à mettre un ? en première ligne, je ne lui demanderais rien et j’ajouterais moi-même le ? en tête de liste dans le script.

    Quel script utilises tu pour remplir la liste depuis ce champ ?

    en réponse à : Condition sur 1ère ligne #74317
    Merlin
    Maître des clés

    Bonjour

     

    Comme je suppose que le “?” est la valeur initiale de ce champ le plus simple est de mettre le ? comme valeur par défaut de ce champ et ensuite de tester si la valeur du champ est égale ou non à sa valeur par défaut.

    Exemple :

    if (this.getField("CHAMP").value != this.getField("CHAMP").defaultValue)

    { // blablabla;}

    else

    { // autre blablabla;}

    en réponse à : Liste déroulante influence la suite du document #74313
    Merlin
    Maître des clés

    Bonjour

     

    Un dessin vaut mieux qu’un long discours.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74303
    Merlin
    Maître des clés

    Bonjour

     

    J’aurais aimé t’aider mais sur la page 4 je ne comprend même pas les questions 😉

    Par-contre il y a une faute en bas à droite : “Surface shérique”, je suppose qu’il manque un “p”.

     

    Et j’ai une question : comment fais tu pour centrer les items des menus déroulants de la page 2 (géographie) ?

    Merci

    en réponse à : Liste déroulante influence la suite du document #74289
    Merlin
    Maître des clés

    Lorsque je fais une sélection, par exemple process B, je vois toujours les pages “questions about process A” et “questions about process C” + les nouvelles pages dédiées à ce process B. Je ne voudrais pouvoir afficher que ces dernières.

    Pas dans le document “Formulaire-type-abracadabrapdf_BB.pdf” téléchargeable ci-dessus.

    À moins que tu utilises un logiciel autre qu’Acrobat ou Foxit.

     

    Je suis désolé mais pourrais-tu me dire comment accéder aux pages modèles que je puisse les modifier, en ajouter ou supprimer stp ? Je n’ai jamais fait ce type d’action

    Regarde la copie d’écran ci-joint, un modèle coché est visible, un modèle non coché est masqué.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74285
    Merlin
    Maître des clés

    🙂

    en réponse à : Joindre le PDF à un email #74283
    Merlin
    Maître des clés

    Malgré tout je me force à m’en servir afin de mieux pouvoir la dompter le jour ou elle sera imposée par Adobe. (à regret)

    Pour l’heure la nouvelle interface est une version bêta dans laquelle beaucoup de fonctionnalités sont manquantes ou à moitié implémentées.

    J’essaierai de la dompter quand elle sera finalisée.

    en réponse à : Exécution de fonction par bouton #74280
    Merlin
    Maître des clés

    OTAN pour moi, je viens de vérifier et j’ai barré ce qui ne fonctionne pas ci-dessus. D’où l’intérêt de toujours vérifier avant de poster 😉

    Les propriétés “value” et “defaultValue” ne peuvent pas être modifiée depuis le champ (virtuel) parent, ce qui a du sens car ce sont des propriétés individuelles et particulières à chaque champ, contrairement aux propriétés d’aspect, de verrouillage, etc.

    Dans ce cas il faut effectivement utiliser une boucle.

    en réponse à : Joindre le PDF à un email #74275
    Merlin
    Maître des clés

    PS : je n’utilise pas la “nouvelle interface” d’Acrobat… Qui ne fait qu’alourdir et allonger les procédures.

    😉

    en réponse à : Joindre le PDF à un email #74273
    Merlin
    Maître des clés

    Bonjour

     

    Le bouton est déjà dans la barre d’outils. Il faut cliquer sur l’icône d’enveloppe qui se situe à droite de la barre d’outil et ensuite cliquer sur “Suivant”.

    Ça se fait en deux clics, ou trois si on saisi l’adresse du destinataire dans le menu déroulant au lieu de le faire dans le logiciel de messagerie.

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74269
    Merlin
    Maître des clés

    Tu peux simplifier le script ci-dessus ainsi :

    // les champs dont les noms commencent par "Q." ne seront pas en lecture seule
    this.getField("Q").readonly=false;

    //de plus, si ces champs sont de type texte alors leur valeur par défaut sera ""
    // sinon l'item 0 mettre l'item 0 comme valeur pour les champs qui ne sont pas de type texte
    // si la valeur par défaut des champ texte est "" et que la valeur
    // par défaut des listes est le premier item il suffit d'écrire :
    this.getField("Q").value=this.getField("Q").defaultValue;

    //si la première occurrence d'un champ est "R." alors la valeur de chacun de ces champs deviendra la valeur par défaut
    this.getField("R").defaultValue=this.getField("R").value;

    • Cette réponse a été modifiée le il y a 11 mois et 2 semaines par Merlin. Raison: Rectification
    en réponse à : Exécution de fonction par bouton #74252
    Merlin
    Maître des clés

    Il y en a un qui me donne du fil à retordre : à la fermeture du document les champs “Q.” (et qui sont des listes déroulantes) se mettent en position 1 et je ne comprend pas pourquoi.

    readonly ça n’empêche que les interactions avec l’utilisateur, pas avec les scripts.

    J’ai testé en désactivant JavaScript : ce n’est pas à la fermeture du document, c’est lors de son ouverture que les listes déroulantes sont modifiées.

    J’ai testé en ouvrant/fermant l’éditeur des scripts de document (qui se déclenchent à l’ouverture) pour forcer leur déclenchement : ça ne vient pas là.

    Il est tard, et le mystère reste entier… 😉

    en réponse à : Exécution de fonction par bouton #74245
    Merlin
    Maître des clés

    Je dirais même plus …/Verifier./.test(oChamp.name)… avec le point pour être certain que le nom n’est que “Verifier” !

    Lorsqu’on veut vérifier les indices et que l’on compte le nombre de champs il faut être certain qu’ils sont tous consécutif.

    En GREP le point tout seul signifie “n’importe quel caractère”, il faut donc l’échapper avec un antislash si on veut détecter le point.

    Je n’ai pas mis le point dans mon script pour simplifier et parce-qu’il ne s’agissait que de compter le nombre de boutons, sans se soucier de leur ordre.

    😉

    en réponse à : Exécution de fonction par bouton #74229
    Merlin
    Maître des clés

    Bonjour

     

    Ce script permet de compter le nombre de champs “Verifier.n” dans le document, ensuite tu récupères la variable “nCompt” pour ta fonction.

    var nCompt = 0;
    for (var i = 0 ; i < this.numFields ; i++) {
    var oChamp = this.getField(this.getNthFieldName(i));
    if ((oChamp.type == "button") && (/Verifier/.test(oChamp.name))) {nCompt = nCompt + 1;}
    }

    app.alert("Il y a " + nCompt + " boutons Vérifier dans ce document");

    en réponse à : Exécution de fonction par bouton #74223
    Merlin
    Maître des clés

    Pour détecter la couleur attribuée il faut utiliser “equal”.

    Exemple :

    if (color.equal(event.target.fillColor, color.red)) {event.target.fillColor = color.green;}

    // ou

    if (color.equal(event.target.textColor, ["RGB", 255/255, 0/255, 0/255])) {event.target.textColor = ["RGB", 0/255, 255/255, 0/255];}

    en réponse à : Exécution de fonction par bouton #74194
    Merlin
    Maître des clés

    “j’ai un souci en cliquant sur Raz : s’il n’y a aucune annotation sur le document, la console renvoie l’erreur :”

    Dis toi que ça n’a aucune importance et que c’est juste une confirmation. 😉

    en réponse à : Exécution de fonction par bouton #74176
    Merlin
    Maître des clés

    Bonjour

     

    Souvent la bonne réponse vient de l’abandon de la mauvaise question.

    Tes scripts tiennent la route, je crois que ce sont les déclencheurs qui posent problème :

    • Les champs R.1.n et R.2.n déclenchent deux fois la fonction “Defaut”, en script de format et en script de touche. À mon avis c’est une fois de trop.
      Et si je comprend bien cette fonction je la verrais mieux en script de Validation.

     

    • L’évènement “Calcul” se déclenche pour tous les champs à chaque fois qu’un seul champ est désactivé, donc la fonction “EditReps ” est déclenchée par tous les champs à chaque fois qu’un seul d’entre eux est utilisé. Par ailleurs ça oblige à gérer l’ordre de calcul (qui ne me parait pas logique dans ce document).
      Donc je crois que cette fonction serait mieux placée si elle était en script de Validation, ainsi elle ne serait déclenchée que par le champ actif, et donc une seule fois.

    Tu peux utiliser des scripts pour déplacer l’appel des fonctions dans les champs, tu n’es pas obligé de tous les reprendre à la main un par un.

    Par exemple pour les 18 champs Question.1.n :

    for (var i = 0; i < 19; i++) {
    // suppression du script de calcul
    this.getField("Question.1."+i).setAction("Calculate", "");
    // ajout en script de validation
    this.getField("Question.1."+i).setAction("Validate", "EditReps();");
    }

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de validation de formulaire #74141
    Merlin
    Maître des clés

    On ne peut rien faire contre ça, il faudra l’expliquer à ton client.

    Sauf peut-être en développant un vrai plugin en C++, en le faisant certifier par Adobe, et en l’installant sur tous les Acrobat Reader de tous les utilisateurs. Mais c’est une autre paire de manches et même en supposant que ce soit techniquement possible rien ne garanti qu’Adobe l’accepterait.

     

    en réponse à : Script de validation de formulaire #74137
    Merlin
    Maître des clés

    Bonjour

     

    Ci-joint, j’ai ajouté deux fonctions en script de document, je te laisse les examiner et modifier le message d’alerte.

    La fonction de vérification signale les champs non remplis en rouge, la deuxième fonction sert à enlever le contour rouge quand on clique dans les champs concernés. Elle est appelée par l’évènement “Champ activé / On focus”.
    C’est plus intuitif pour l’utilisateur mais tu peux supprimer la ligne qui ajoute les contours rouge si tu préfères.

    L’inconvénient de mettre le contrôle en évènement “Doc sera enregistré” c’est qu’il faut désactiver JavaScript (Préférences : JavaScript) pour pouvoir enregistrer le document final avec les champs vides sans les contours rouge.

    Parce-qu’il faut savoir qu’une fonction/action placée en évènement “Doc sera enregistré” (ou “Doc sera imprimé”) n’empêche pas son enregistrement (ou son impression), ça ne fait qu’avertir l’utilisateur.

    Et c’est tant mieux car il peut avoir plein de bonnes raisons pour enregistrer son document avant de l’avoir complètement rempli.

     

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

    Je le met au format “code” pour éviter la transformation de certains caractères :

    Instructions mailto:

    En HTML l'instruction mailto peut être complétée, par exemple ci dessous:

    mailto=toto@truc.com?subject=ici l'objet du mail&body=ici le texte qui apparaitra dans le mail par défaut

    Donc dans le champ du lien vers le mail tu ajoutes &subject=ton objet &body=ton texte.

    Dans les textes de sujet et de corps de l'email il est préférable d'encoder les caractères spéciaux :

    , = %2C%20

    & = &

    Espace = %20

    Saut de ligne = %0D%0A

    < = %3c

    % = %25

    ? = %3

    Attention à ne pas encoder les “?” avant Subject et Body qui doivent rester tels quels…

    Merlin
    Maître des clés

    Bonjour

     

    Le point d’interrogation ne s’utilise qu’une seule fois après l’adresse email, les ajouts suivant doivent être séparés par une esperluette.

    Il faut donc remplacer le deuxième point d’interrogation par une esperluette (et il me semble qu’il ne faut pas mettre de majuscule à “body”) :

    mailto:toto.lolo@gmail.com?subject=Demande d’accès&body=Bonjour, Veuillez trouver ci-joint ma demande. Meilleures salutations

    en réponse à : Fonction TVA multiple #74097
    Merlin
    Maître des clés

    🙂

    Merci pour le retour.

    en réponse à : Fonction TVA multiple #74089
    Merlin
    Maître des clés

    Acrobat Reader (et Foxit Reader aussi) ne permet pas d’aplatir les champs, c’est à dire de les fusionner avec la couche graphique. Donc tu as bien fait de choisir de les verrouiller. Ça ça fonctionne.

    Par-contre, sécurité oblige, il n’est pas possible de nommer et d’enregistrer un PDF depuis un script de document. Tout ce qu’on peut faire c’est déclencher un Enregistrer sous et laisser l’utilisateur se débrouiller avec.

    Pour enregistrer et nommer un PDF il faut que le document fasse appel à un script d’application, c’est à dire un script préalablement installé dans le sous-dossier “JavaScripts” d’Acrobat (Reader ou Pro).

    Toutes les explications sont ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/

     

    en réponse à : Fonction TVA multiple #74082
    Merlin
    Maître des clés

    🙂

    en réponse à : Fonction TVA multiple #74079
    Merlin
    Maître des clés

    Merci !

    Il y a une boucle qui calcule le total HT de chaque rangée, et une autre boucle qui calcule les TVA en alimentant 3 variables en fonction du taux utilisé.

    L’intérêt d’avoir un seul champ qui déclenche tous ces calculs c’est la rapidité, s’il y avait 2 ou 3 fois 72 champs de calculs qui se déclenchaient à chaque fois il y aurait des lenteurs sensibles à l’utilisation.

     

    Une liste déroulante en lecture seule n’affiche pas la flèche noire, donc on peut utiliser les évènements “Document est imprimé” et “Document a été imprimé” pour les verrouiller avant l’impression et les déverrouiller après.

    Et pour que ça ne soit pas considéré comme une modification du document si l’utilisateur n’a rien fait d’autre qu’imprimer depuis le dernier enregistrement on stocke au préalable la variable “dirty” et on la rétablit ensuite.

    Ce qui nous donne :

    // À PLACER EN ÉVÈNEMENT WILL PRINT (SERA IMPRIMÉ)
    // stockage de la variable "dirty"
    var bSale = this.dirty;
    // verrouillage de toutes les listes
    for (var i = 0; i < this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    if (oFld.type == "combobox") {oFld.readonly = true;}
    }

    // À PLACER EN ÉVÈNEMENT DID PRINT (A ÉTÉ IMPRIMÉ)
    // déverrouillage de toutes les listes
    for (var i = 0; i < this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    if (oFld.type == "combobox") {oFld.readonly = false;}
    }
    // rétablissement de la variable "dirty"
    this.dirty = bSale;

    en réponse à : Fonction TVA multiple #74075
    Merlin
    Maître des clés

    PS : si le document doit être imprimé il existe une astuce pour ne pas imprimer la flèche située à droite des listes déroulantes.

    Tu me dis.

    en réponse à : Fonction TVA multiple #74073
    Merlin
    Maître des clés

    Bonjour

     

    Ci-joint un document qui fonctionne.

    L’astuce c’est de créer tous les champs à partir de la première rangée en utilisant la fonction “Créer plusieurs copies” (comme indiqué par bebarth) dans un autre PDF suffisamment haut pour en contenir 72 (j’ai utilisé un format A1). Ensuite il faut les amener dans le formulaire en 3 fois (car 3 pages) par copier-coller.

    J’ai remplacé les champs “TVA” par des listes déroulantes, ce qui permet d’être certain des valeurs qu’ils contiennent, et donc d’effectuer les calculs en utilisant ces valeurs directement.

    Les scripts de calcul des rangées et des TVA sont dans le champ invisible “calculs”.

    Les champs total HT et total TTC ne font que de simples additions.

    L’ordre de calcul est important, bien entendu.

     

    J’ai aussi légèrement modifié la fonction Reset et le champ qui contient l’intitulé, car en fait le Reset ne vide pas les champs, il les remet à leur valeur par défaut. Ce qui n’est pas forcément la même chose. 😉

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Enregistrer sous… avec concaténation de champs #74056
    Merlin
    Maître des clés

    J’ai du formater la date en américain YYYY-MM-JJ pour supprimer les “/” et pour le classement dans l’explorateur

    Juste une précision : le format américain c’est MM/JJ/YYYY

    Ce que tu utilises c’est le format ISO, ou format international, qui est effectivement le plus pratique à bien des égards.

     

    Format de date ISO

     

    en réponse à : Erreur Envoi FDF #74049
    Merlin
    Maître des clés

    Surtout ne répond pas à ce message et ne clique sur aucun lien, c’est une arnaque.

    Les employés de chez Adobe ont obligatoirement une adresse qui se termine par @adobe.com

    et chez Adobe il n’y a pas de support par email.

    Donc à mettre directement dans le dossier spams.

     

    Attend la réponse dans le sujet de discussion d’un expert ou d’un employé d’Adobe (reconnaissable au logo Adobe dans son badge).

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Erreur Envoi FDF #74046
    Merlin
    Maître des clés

    Je ne sais pas quoi répondre…

     

    Tu devrais poster ta question sur ce forum qui est fréquenté par de nombreux experts internationaux : https://community.adobe.com/t5/acrobat/ct-p/ct-acrobat

    Tu peux y poster en français, il y a un traducteur automatique.

    en réponse à : Erreur Envoi FDF #74039
    Merlin
    Maître des clés

    Bonjour

     

    Comment est envoyé ce FDF ?

    Par email ou via la fonction Submit ?

    En tout cas s”il s’agit d’une version d’Acrobat à jour ça pourrait signifier qu’il y a un nouveau bug (de plus) dans celui-ci, et vu la vitesse à laquelle les bugs (ne) sont (pas) corrigés ce ne serait pas une bonne nouvelle.

    Sinon il faudra chercher dans le processus d’envoi.

    en réponse à : Enregistrer sous… avec concaténation de champs #74035
    Merlin
    Maître des clés

    Bonjour

     

    Ce que tu souhaites faire est possible mais… si et seulement si ça vient d’un script d’application, ce n’est pas possible depuis un script de document.

    Un script d’application c’est un fichier .js qu’il faut placer dans le répertoire “Javascripts” d’Acrobat, et qui ensuite peut être appelé par un bouton placé dans un document.

    Pour les explications complètes voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/

     

    Donc tout dépend de comment et par qui sera utilisé ton document.

    en réponse à : Remplissage automatique avec fichier Excel #74026
    Merlin
    Maître des clés

    Bonjour

     

    Je regarderai ça ce soir ou en fin de weekend.

    en réponse à : Champ texte grisé #74024
    Merlin
    Maître des clés

    Bonjour

     

    Essaie avec le ci-joint.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante influence la suite du document #74015
    Merlin
    Maître des clés

    Bonjour

     

    C’est une question fréquemment posée dans ce forum.

    Fait une recherche sur “listes dépendantes” et sur “listes mère filles”, ça t’apportera beaucoup de réponses.

    N’hésites pas à revenir poser des questions si tu rencontres des difficultés.

    en réponse à : Orientation champs formulaire #74011
    Merlin
    Maître des clés

    Bonjour

     

    La réponse est non.

    Ce sera possible quand les logiciels supporteront (enfin) le PDF 2.0, mais pour l’heure ça ne l’est pas.

    en réponse à : Numéroter les pages imprimées #74007
    Merlin
    Maître des clés

    Bonjour

     

    Le plus simple c’est de dupliquer la page 4 fois (pour en avoir 5 au total) et d’utiliser la fonction “En-tête et pied de page” pour leur ajouter la numérotation avant de les imprimer.

    en réponse à : Script pour modifier l’ordre des pages #73987
    Merlin
    Maître des clés

    C’est plus compliqué que ça.

    Avec Reader on peut générer (spawn) des pages depuis des pages modèles (templates) masquées, les supprimer et éventuellement les réordonner.

    Mais ça ne fonctionne qu’avec des pages générées, ça ne fonctionne pas dans un document normal avec des pages statiques. C’est un cas de figure très particulier.

    en réponse à : Script pour modifier l’ordre des pages #73981
    Merlin
    Maître des clés

    Acrobat Reader ne permet pas de modifier un document (remplir un formulaire ou ajouter des commentaires n’est pas considéré comme modifications).

    en réponse à : Formulaire de recherche dans un PDF #73980
    Merlin
    Maître des clés

    Bonjour

     

    Pour aller plus vite que quoi ?

    Un script JavaScript n’ira jamais plus vite que la recherche intégrée d’Acrobat.

    Pour faire plus pro, ou bien pour offrir d’autres options à l’utilisateur il est possible de lui ouvrir la fenêtre de recherche avancée.

    en réponse à : Script pour modifier l’ordre des pages #73977
    Merlin
    Maître des clés

    Bonjour

     

    La réponse est oui si l’utilisateur utilise Acrobat Pro ou Acrobat Standard.

    La réponse est non si l’utilisateur utilise Acrobat Reader.

    en réponse à : Propriété d’un champ #73971
    Merlin
    Maître des clés

    +

    en réponse à : Propriété d’un champ #73965
    Merlin
    Maître des clés

    Encore une fois l’expérience montre qu’il vaut mieux poster un exemple de ce qu’on veut obtenir que juste un script, du coup j’ai capté immédiatement comment simplifier.

    Donc je ne sais pas pourquoi ton script ne fonctionne pas mais on s’en fiche.

    En fait on peut simplifier le script et s’éviter bien des complications en utilisant la convention de dénomination des champs de formulaire (voir : https://www.abracadabrapdf.net/?p=525 ).

    Au lieu de placer la référence au numéro de page avant le nom il faut la placer après et la séparer par un point, et ensuite placer la numérotation du champ dans la page après un autre point.

    Ce qui nous donne :

    question.P1.0

    question.P1.1

    question.P2.0

    question.P2.1

    etc.

    Ainsi avec JavaScript pour par exemple modifier tous les champs “question” dans toutes les pages il suffit de s’adresser au champ parent “question“.

    Et, autre exemple, pour modifier tous les champs “question” de la page 2 il suffit de s’adresser au champ parent “question.P2“.

    Ce qui évite de devoir écrire des boucles et/ou de devoir détecter des caractères dans les noms des champs.

    Ci-dessous le script que j’ai placé dans l’exemple ci-joint, je te laisse t’occuper des champs réponses.

     

    function CoulQ() {

    var Coul=this.getField("Menu.3").value;

    if (Coul=="Aucune") {this.getField("question").fillColor = color.transparent;}

    else if (Coul=="Jaune") {this.getField("question").fillColor = color.yellow;}

    else if (Coul=="Vert") {this.getField("question").fillColor = color.green;}

    else if (Coul=="Bleu") {this.getField("question").fillColor = color.blue;}

    else if (Coul=="Rouge") {this.getField("question").fillColor = color.red;}

    }

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Propriété d’un champ #73960
    Merlin
    Maître des clés

    Je ne sais pas si ça vient du collage dans l’éditeur de texte du forum mais il y a un problème avec les guillemets, JavaScript ne comprend que les guillemets droits.

    Pour éviter toute erreur de format avec l’éditeur de texte il faut sélectionner le script et sélectionner “Code” dans le menu “Format”.

    Par ailleurs tu devrais utiliser “else if” après le premier “if”, ça évite au script de tester inutilement toutes les conditions et donc ça devrait accélérer son exécution.

     

    function CoulQ() {

    var Coul=this.getField("Menu.3").value;

    if (Coul=="Aucune") {
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("question.")==0) {this.getField("question."+i).fillColor = color.transparent;}
    }
    }

    else if (Coul=="Jaune") {
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("question.")==0) {this.getField("question."+i).fillColor = color.yellow;}
    }
    }

    else if (Coul=="Vert") {
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("question.")==0) {this.getField("question."+i).fillColor = color.green;}
    }
    }

    else if (Coul=="Bleu") {
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("question.")==0) {this.getField("question."+i).fillColor = color.blue;}
    }
    }

    else if (Coul=="Rouge") {
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("question.")==0) {this.getField("question."+i).fillColor = color.red;}
    }
    }

    }

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Propriété d’un champ #73939
    Merlin
    Maître des clés

    Concernant la position d’un champ, l’astuce c’est de le placer où il est besoin avec la souris et de copier ses coordonnées avec JavaScript. Ensuite il n’y a plus qu’à ajouter/retrancher.

    😉

    en réponse à : Modifier un script #73924
    Merlin
    Maître des clés

    La logique voudrait que la première ligne (qui masque le bouton) soit placée tout à la fin du script.

    Si ça n’y change rien il faudrait nous dire quel message d’erreur est retourné par la Console JS (voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/ ).

    en réponse à : Modifier un script #73912
    Merlin
    Maître des clés

    Bonjour

    On peut protéger un PDF contre les modifications et l’ajout d’annotations tout en laissant la possibilité de remplir les champs de formulaire (voir capture).

    On ne peut pas ajouter cette protection via un script dans Acrobat Reader.

     

    Si l’idée c’est de verrouiller tous les champs sauf ceux indiqués il suffit d’ajouter quelques lignes au script existant :

    //Masquer le bouton
    event.target.display = display.hidden;

    //Verrouiller tous les champs
    for (var i=0; i<this.numFields; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    f.readonly = true;
    }

    // déverrouiller les champs signature
    this.getField("signature1").readonly = false;
    this.getField("signature2").readonly = false;
    this.getField("signataire1").readonly = false;
    this.getField("signataire2").readonly = false;

    Attachments:
    You must be logged in to view attached files.
Affichage de 99 réponses de 199 à 297 (sur un total de 10,362)