Donnez vie à vos documents numériques !
 

Merlin

Toutes mes réponses sur les forums

Affichage de 99 réponses de 298 à 396 (sur un total de 10,404)
  • Auteur
    Réponses
  • 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 1 année et 10 mois 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.
    en réponse à : Propriété d’un champ #73901
    Merlin
    Maître des clés

    bebarth tu as fait un vrai bon boulot qui devrait faire pâlir d’envie ce qu’on trouve sur le forum d’Adobe et d’autres. Je ne suis pas certain non plus que Chat GPT et consorts puisse générer un tel code.

    Mais je crois que la propagation sur une autre page est un luxe car ce n’est pas utilisable avec Reader (qui ne peut pas ajouter de page).

    À mon avis si ça ne rentre pas dans une seule page il faudrait soit activer le défilement dans le champ, soit prévenir l’utilisateur via une alerte, soit faire les deux.

    Bravo en tout cas.

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

    J’avais essayé de le placer en script de Validation, de Format, etc. dans le champ concerné mais ça fonctionne effectivement bien mieux depuis la Console !

    Par-contre même depuis la Console il n’ajoute pas de page, mais sans retourner de message d’erreur, et le message de résultat précise bien que tout le texte n’est pas affiché.

    Je vais tester plus avant.

     

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

    C’est étrange car avec mes Mac je peux ouvrir les fichiers .js attachés !

    Je suppose que tu as débloqué les paramètres de Sécurite et de Sécurité avancée ?

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

    J’ai essayé avec les deux et ça ne fonctionne pas, le champ ne se redimensionne pas.

    J’ai placé le script en Format perso et en Validation.

     

    Et avec ton texte d’origine qui déborde largement ça retourne ce message d’erreur :

    NotAllowedError: Security settings prevent access to this property or method.
    Doc.newPage:35:Field champTexte:Format

     

    Voudrais tu donner raison à ma première réponse ?

    😉

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

    bebarth : on ne peut ni lire ni extraire la pièce jointe, c’est un fichier .js !

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

    Salut bebarth

    Ça ne fonctionne pas :

    TypeError: lesMots.replace is not a function
    21:Field:Validate

     

    Par ailleurs je n’ai jamais compris pourquoi Acrobat autorise l’ajout des pièces jointes .zip ou .js tout en interdisant leur extraction. À croire que ses développeurs viennent tous de l’Absurdistan.

    😉

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

    Bonjour,

    la réponse courte est non, mais on peut facilement faire l’inverse en utilisant le corps de texte automatique : c’est le texte qui s’ajuste au champ.

     

    La réponse longue est oui, il faut compter le nombre de caractères saisis en temps réel et aussi ceux qui sont supprimés. Ça requiert donc une usine à gaz en JavaScript assez longue à développer et ça impose d’utiliser une police à chasse fixe (Courier), et dont le corps ne doit pas varier.

    Mais comme le script ne peut servir qu’à étendre/réduire les dimensions du champ ça n’a qu’un intérêt très limité dans un document PDF, dont la dimension des pages est forcément fixe, puisqu’il faut de toute façon prévoir de la place libre pour agrandir le champ et prévoir comment ce sera le moins moche possible en cas de réduction.
    Par opposition aux pages à redimensionnement dynamique, comme en HTML.

     

    en réponse à : Problème clavier Adobe Acrobat Pro XI #73825
    Merlin
    Maître des clés

    Acrobat m’a juste prévenu du fait que les champs ayant le même nom verraient leur contenu fusionner, ce qui est normal et attendu, mais sans dire s’il y en a ni combien, bien entendu.

     

    Sinon pour pouvoir te répondre il faudrait savoir ce que disaient ces messages.

     

    en réponse à : Problème clavier Adobe Acrobat Pro XI #73823
    Merlin
    Maître des clés

    Bonjour

     

    Aucun problème pour moi, ça a marché comme sur des roulettes.

    Le fichier complet est là : https://shared-assets.adobe.com/link/417b86a3-e9c8-4d8a-6b11-54e3832f4113

    en réponse à : Carcatère présent dans une chaine #73809
    Merlin
    Maître des clés

    Bonjour

     

    Il faut utiliser la méthode test() , le(s) caractère(s) à chercher se place entre deux slash :

    // MISE EN VARIABLE
    str = this.getField("num").value;
    // SI LA VARIABLE CONTIENT "-"
    if (/-/.test(str) {
    // code à exécuter
    }

    en réponse à : Formule trigonométrie #73799
    Merlin
    Maître des clés

    Merci, moi ça va très bien tant qu’on ne me parle pas de trigonométrie et autres math.machin().

    😉

     

    Bonne année.

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

    Il y a deux façon de réduire le nombre de champs qui effectuent des calculs et donc le temps de latence :

    • Placer le script en script de Validation, ainsi seul le champ actif est calculé. Mais ce n’est pas toujours possible.
    • Placer tous les scripts de calcul dans un seul champ, éventuellement masqué, car un seul long script de calcul déclenché par un seul champ s’exécute beaucoup plus vite que plusieurs petits calculs déclenchés par plusieurs champs.
    Merlin
    Maître des clés

    Bonjour et bonne année

     

    Ça ne fonctionne pas parce-que JavaScript est sensible à la casse : text4 et Text4 sont deux noms différents.

     

    Voici une version simplifiée :

    function updateTextFieldVisibility() {
    if (this.getField(“Check Box1”).value != "Off" && this.getField(“Check Box2”).value != "Off" && this.getField(“Check Box3”).value != "Off") {
    this.getField(“Text4”).display = display.visible;}
    else {this.getField(“Text4”).display = display.hidden;}
    }

    en réponse à : Calcul IMC #73775
    Merlin
    Maître des clés

    C’est effectivement un bug qui a affecté une version d’Acrobat Pro cette année ==> mise à jour !

    La version actuelle est celle-ci (voir capture).

     

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

    « Mais quand j’enregistre le fichier, celle ci n’est pas incorporée dans le pdf… »

    Comment enregistres tu le fichier, et avec quel logiciel ?

    en réponse à : Calcul IMC #73765
    Merlin
    Maître des clés

    PS : bonne année à tous, ce sera mon dernier message pour 2023.

     

    en réponse à : Calcul IMC #73763
    Merlin
    Maître des clés

    C’est parce-que JavaScript est sensible à la casse, tes noms de champs ont une lettre capitale mais pas dans le script de calcul.

    Poids et poids sont deux mots différents.

     

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

    Bonjour et bienvenue

     

    Je viens de vérifier dans le forum, il y a bien une question concernant l’IMC mais il n’y a pas de réponse.

    Donc le mieux serait que tu partages (tout ou partie de) ton document pour qu’on voie ce qui lui manque.

     

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

    La latence c’est parce-qu’il faut attendre que la champ actif soit désactivé pour que le calcul s’effectue.

    Pour éviter ça il faudrait placer un script (de validation) différent dans chacun des 2 x 18 champs concernés…

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

    Il faut ajouter un champ, ou utiliser un champ existant, et lui placer ce script en Script de calcul. Je ne peux pas tester car ces champs sont eux-mêmes calculés mais ça devrait être OK :

    for (var i=1; i < 19; i++) {
    this.getField("DéperditionsRow" +i).textColor = color.black;
    this.getField("PDTMRow" +i).textColor = color.black;
    if (Number(this.getField("PDTMRow" +i).value) < Number(this.getField("DéperditionsRow" +i).value)) {
    this.getField("PDTMRow" +i).textColor = color.red;
    this.getField("DéperditionsRow" +i).textColor = color.red;
    }
    }

    Fait attention qu’il manque l’accent dans le nom des deux premiers champs « DéperditionsRow« , c’est à corriger avant d’exécuter le script.

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

    Bonjour et bonnes fêtes

     

    Il faut ajouter ce script en script de format personnalisé dans le menu Exemple de coefficient :

    for (var i=1; i < 19; i++) {
    this.getField("G" + i).value = event.value;
    }

    Tu devrais surveiller la Console JS, elle affiche à répétition que « f is null », ce qui veut dire en clair qu’il y a un problème de calcul quelque part, a priori un champ manquant.

    Ce n’est pas grave en soi mais s’il y a d’autres calculs dépendants qui s’enchainent à partir d’une erreur ça pourrait l’être.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplissage automatique de champ de texte avec un fichier csv #73714
    Merlin
    Maître des clés

    Bonjour

     

    C’est un sujet qui a déjà été traité, commences par là et n’hésite pas à revenir poser des questions si ça coince :

    Exemple :

    https://www.abracadabrapdf.net/wp-content/uploads/2022/01/Ejemplo_BB1-archivo-csv.pdf

    Sujets :

    Champs adresses remplis après sélection nom dans liste

    Codes postaux en liaison sur deux casses

    Liste et champs multiple provenant d’un fichier CSV en pièce jointe

     

     

    en réponse à : Formule trigonométrie #73695
    Merlin
    Maître des clés

    Moi je suis largué depuis longtemps !

     

    en réponse à : Décocher automatiquement CASE #73692
    Merlin
    Maître des clés

    Astucieux.

    J’étais parti sur un truc plus complexe mais du coup je ne le finirai pas.

    😉

    en réponse à : Améliorer la qualité du texte d’un PDF #73679
    Merlin
    Maître des clés

    « Lien PDF à améliorer »

    Désolé, j’ai raté le coche.

    en réponse à : Liste déroulante fille ne s’enregistre pas #73662
    Merlin
    Maître des clés

    David : j’ai modifié ton « nom apparent » qui était ton adresse email, ça t’évitera certainement beaucoup de spams.

    😉

    en réponse à : Restriction et protection #73660
    Merlin
    Maître des clés

    Bonjour

     

    La seule vraie protection sans mot de passe c’est la signature numérique : plus rien ne peut être modifié.

    Et si on arrivait quand même à modifier quelque chose ça invaliderait la signature.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante fille ne s’enregistre pas #73646
    Merlin
    Maître des clés

    Bravo !

    Je me doutais de quelque chose comme ça mais je n’ai pas trouvé où.

    en réponse à : Formule trigonométrie #73640
    Merlin
    Maître des clés

    « Dommage que que le site ne possède pas un espace ou l’on peut mettre nos création quel qu’en soit la taille »

    C’est bien la première fois que cette demande est faite ! Merci.

    Dans le forum la taille des pièces jointes est limitée mais il existe d’autres solutions, voir :

    Envoyer/partager/poster une pièce jointe volumineuse

    en réponse à : Copier presse papier #73639
    Merlin
    Maître des clés

    Bonjour

     

    Oui, le code existe mais il ne fonctionne plus depuis Acrobat 6 et il ne fonctionnait pas dans les autres logiciels car il faisait appel à l’article de menu du menu Fichier : Copier.

    app.execMenuItem("Copy");

    Et de toute façon, avant Acrobat 6 on pouvait copier mais il était quasiment impossible de coller, sécurité oblige. Il fallait utiliser un script d’application et connaître la cible d’avance.

    en réponse à : Formule trigo en deux casses #73626
    Merlin
    Maître des clés

    Bonjour

     

    Ça fait 3 messages dans 2 sujets où tu poses la même question : https://www.abracadabrapdf.net/forums/topic/formule-trigonometrie/

     

    C’est inutile, je ferme ce sujet.

     

    en réponse à : Formule trigonométrie #73617
    Merlin
    Maître des clés

    « je ne sais pas pourquoi (mais je vais essayer de me renseigner) Math.acosh() ne fonctionne pas en Acrobat JavaScript… »

    Certainement parce-que le PDF ne supporte qu’une ancienne version de ECMAScript, c’est aussi pour ça qu’on ne peut pas utiliser let.

    en réponse à : Améliorer la qualité du texte d’un PDF #73608
    Merlin
    Maître des clés

    Bonjour

     

    L’extrait en question est trop lourd pour le forum.

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

    en réponse à : Calcul complexe #73598
    Merlin
    Maître des clés

    Bonjour

     

    Ce n’est pas les calculs qui sont complexes, c’est la quantité de tarifs possibles à prendre en compte.

    Je pourrais te donner une réponse avec une méthode mais ce ne serait pas vraiment une « bonne » réponse.

    Je vais donc d’abord attendre que quelqu’un qui s’y connaisse en array te propose quelque chose de mieux.

     

    En attendant j’attire ton attention sur une bonne idée que tu as eu mais que tu n’exploites pas à fond :

    Le champ « total.parutions » calcule le total des champs nommés « mois.quelquechose« .

    Comme tu as eu la bonne idée de mettre un point dans leur nom et donc de créer une relation parent-enfants il est inutile de sélectionner tous les champs dont tu veux additionner la valeur, il suffit de sélectionner le nom du champ parent (voir capture).

    Quand il n’y a que 4 champs à additionner ça passe inaperçu mais quand il y en a 40 ou 400 ce n’est pas le même plaisir.

    Voir l’article qui explique tout (2e partie) : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73573
    Merlin
    Maître des clés

    « Dans ce cas, ces 2 signes sont redondants, mais ce n’est pas grave de les mettre ensemble. »

    Pas exactement.

    Le + sert à détecter une ou plusieurs espaces consécutives.

    Le g sert à détecter plusieurs séquences de une ou plusieurs espaces consécutives. Par exemple s’il y a plusieurs mots dans la chaîne de caractères testée ça permet de détecter toutes les espaces entre tous les mots.

    en réponse à : Raccourcir une condition #73570
    Merlin
    Maître des clés

    « replace(/\s+/g,””) On supprime tous les espaces. → quelle est le rôle de /, celui de \s celui de +/g… »

    C’est du GREP.

    \s signifie : n’importe quelle espace (en typographie l’espace est féminin).

    + signifie : présent une ou plusieurs fois.

    Les deux slashes servent à délimiter le début et la fin de la requête (regex).

    g signifie qu’on veut une recherche globale, c’est à dire une recherche qui ne s’arrête pas à la première occurrence trouvée.

    en réponse à : Champs à récupérer pour les textes du message. #73553
    Merlin
    Maître des clés

    Bonjour

     

    A priori ce script fait le job.

    Quelle est ta question ?

    en réponse à : Champ – Email #73535
    Merlin
    Maître des clés

    Bonjour

     

    C’est l’utilisateur qui est censé remplir ces champs.

    Sinon on peut les rendre invisible et leur attribuer une valeur par défaut s’ils doivent toujours contenir la même valeur.

    en réponse à : Champs adresses remplis après sélection nom dans liste #73531
    Merlin
    Maître des clés

    « j’ai un message d’erreur car le format du champ 43 est nombre monétaire »

     

    Bonjour

     

    Par principe un champ qui est en lecture seule et qui est rempli programmatiquement ne devrait pas avoir de « Format ».

    En général c’est contre-productif, comme dans ce cas.

    en réponse à : Lien vers un nouvel onglet #73518
    Merlin
    Maître des clés

    Bonjour

     

    Le seul moyen de forcer l’ouverture dans un nouvel onglet/fenêtre c’est d’utiliser JavaScript mais les logiciels utilisés par ton client ne supportent pas JavaScript dans les PDF.

    Donc la réponse est non.

    en réponse à : Envoi d’un formulaire à l’aide d’un bouton #73468
    Merlin
    Maître des clés

    Et puis surtout tu supprimes ça, c’est un processus du 20e siècle.

    🙂

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Envoi d’un formulaire à l’aide d’un bouton #73466
    Merlin
    Maître des clés

    Un dessin vaut mieux qu’un long discours 😉

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Décomposition en facteurs premiers #73465
    Merlin
    Maître des clés

    Chapeau bas !

    en réponse à : Envoi d’un formulaire à l’aide d’un bouton #73450
    Merlin
    Maître des clés

    Bonjour

     

    Puisqu’il est question d’IMAP et de POP je suppose que tu veux envoyer le formulaire par email.

    Il n’y a pas besoin de script, tout ce qu’il faut savoir c’est qu’il faut ajouter : « mailto: » devant l’adresse email.

    mailto:exemple@exemple.fr

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Décomposition en facteurs premiers #73433
    Merlin
    Maître des clés

    Bonjour

     

    Désolé mais les maths et moi…

     

    en réponse à : Nombre aléatoire compris entre 2 valeurs #73416
    Merlin
    Maître des clés

    Bonjour

     

    Ceci fonctionne de zéro à 20, mais je sais pas intégrer les chiffres négatifs :

    var nNombreAleatoire = Math.ceil(20 * Math.random());

    en réponse à : INIT CHECKBOX en javascript #73412
    Merlin
    Maître des clés

    Bonjour

     

    Tu devrais t’intéresser à la « Convention de dénomination des champs de formulaire », c’est typiquement le cas dans lequel ça simplifie les choses.

    Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/

    en réponse à : Raccourcir une condition #73403
    Merlin
    Maître des clés

    Bonjour

     

    Je l’écrirais plutôt comme ça :

    var vC2 = this.getField("NB.2").valueAsString;
    var vC3 = this.getField("NB.3").valueAsString;
    if (RepUser2 == (vC2 + ("×" || "*" || " × " || " * ") + vC3) || (vC3 + ("×" || "*" || " × " || " * ") + vC2) || (Number(vC2) * Number(vC3))) {}

    Merlin
    Maître des clés

    Partant du principe que ce sont des annotations il faut utiliser la fonction « destroy », dont j’aime le nom très punk.

    Ci-joint.

     

    // Remove all "FileAttachment" annotations on page 1.
    var annots = this.getAnnots({ nPage:0 });
    for (var j = 0; j < annots.length; j++)
    if (annots[j].type == "FileAttachment") annots[j].destroy();

    PS : J’ai changé l’indice i en j toujours pour le même problème d’affichage des i entre crochets !
    @+

    • Cette réponse a été modifiée le il y a 2 années et 5 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Effacer les commentaires #73383
    Merlin
    Maître des clés

    « je pense que lorsqu’on programme régulièrement c’est pas mal de télécharger une version pdf. »

    Avant j’avais en permanence le document acrobatsdk_jsapiref.pdf ouvert dans Acrobat Reader pendant que je travaillais avec Acrobat Pro.

    Maintenant acrobatsdk_jsapiref.pdf est ouvert en permanence dans Foxit Reader.

     

    en réponse à : Effacer les commentaires #73380
    Merlin
    Maître des clés

    Attention, j’ai modifié le script que j’ai posté !

    en réponse à : Effacer les commentaires #73377
    Merlin
    Maître des clés

    A priori l’utilisateur lambda ne voit pas les messages de la console mais pour bien faire les choses il faut protéger le script pour qu’il ne s’exécute que s’il y a des annotations :

     

    this.syncAnnotScan();
    var annots = this.getAnnots({ nPage:0 });
    for (var j = 0; j < annots.length; j++)
    if (annots != null && annots[j].type == "FreeText") {annots[j].destroy();}

     

    Pourquoi ai-je ajouté syncAnnotScan ?

    Parce-que c’est le moyen de s’assurer de ne rater aucune annotation, voir :

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

    en réponse à : Liste déroulante et sous-listes déroulantes #73367
    Merlin
    Maître des clés

    Bonjour

     

    Oui c’est possible mais ça requiert de bonnes connaissances en JavaScript.

    Fais une recherche dans le forum sur « liste mère fille », tu trouveras plusieurs exemples et explications.

    Merlin
    Maître des clés

    Bonjour

     

    Au plus simple : dans InDesign sur chacun des calques tu ajoutes un champ nommé « montant » auquel tu attribues la position et la couleur voulue (Acrobat ne sait pas lier un champ à un calque).

    Comme dans ton document il ne peut y avoir qu’un seul calque affiché il n’y aura donc qu’un seul champ affiché à l’instant T.

    Il faut juste qu’ils aient tous exactement le même nom, pour partager leur valeur et leur calcul.

     

    Sinon c’est faisable avec JavaScript, avec un ou six champs, mais c’est plus laborieux.

    Merlin
    Maître des clés

    👍

    en réponse à : Tampons – Texte retour « Undefined » #73281
    Merlin
    Maître des clés

    👍

    en réponse à : Tampons – Texte retour « Undefined » #73276
    Merlin
    Maître des clés
Affichage de 99 réponses de 298 à 396 (sur un total de 10,404)