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,236)
  • Auteur
    Réponses
  • 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 1 année 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
    en réponse à : Tampons – Texte retour “Undefined” #73275
    Merlin
    Maître des clés

    “The « item_id » in a dialog object must be 4 and only 4 characters long.”

    Qui a décidé ça ? Laissez le moi ! 

    en réponse à : Tampons – Texte retour “Undefined” #73270
    Merlin
    Maître des clés

    Bonjour

     

    Les variables “text1” 2 et 3 sont toujours “undefined”.

    J’ai placé dans le script plusieurs console.println comme celui-ci : console.println("text1= " + text1);

    et la réponse est toujours la même :

    text1= undefined

    Mais je ne comprend pas pourquoi.

     

    en réponse à : Remplissage automatique champs #73263
    Merlin
    Maître des clés

    On peut simplifier le script ainsi :

    var aRay1 = [];
    var aRay2 = [];
    var aRay3 = [];
    var aRay4 = [];
    var aRay5 = [];

    for (var i=0; i<27; i++){
    if (this.getField("C.1."+i).value != "Off") {aRay1.push(this.getField("C.1."+i).valueAsString);}
    if (this.getField("C.2."+i).value != "Off") {aRay2.push(this.getField("C.2."+i).valueAsString);}
    if (this.getField("C.3."+i).value != "Off") {aRay3.push(this.getField("C.3."+i).valueAsString);}
    if (this.getField("C.4."+i).value != "Off") {aRay4.push(this.getField("C.4."+i).valueAsString);}
    if (this.getField("C.5."+i).value != "Off") {aRay5.push(this.getField("C.5."+i).valueAsString);}
    }

    this.getField("Se1").value = "SE1 = {" + aRay1.join(", ") + "}";
    this.getField("Se2").value = "SE2 = {" + aRay2.join(", ") + "}";
    this.getField("Se3").value = "SE3 = {" + aRay3.join(", ") + "}";
    this.getField("Se4").value = "SE4 = {" + aRay4.join(", ") + "}";
    this.getField("Se5").value = "SE5 = {" + aRay5.join(", ") + "}";

    en réponse à : Remplissage automatique champs #73257
    Merlin
    Maître des clés

    Bonjour

     

    En fait il faut que les coches aient leur numéro d’ordre comme valeur d’exportation, ensuite tout est plus simple.

    J’ai ajouté un champ “calcul”, tout est dedans (ci-joint).

    var aRay1 = [];
    var aRay2 = [];
    var aRay3 = [];
    var aRay4 = [];
    var aRay5 = [];

    for (var i=0; i<27; i++){
    if (this.getField("C.1."+i).value != "Off") {aRay1.push(this.getField("C.1."+i).valueAsString);}
    if (this.getField("C.2."+i).value != "Off") {aRay2.push(this.getField("C.2."+i).valueAsString);}
    if (this.getField("C.3."+i).value != "Off") {aRay3.push(this.getField("C.3."+i).valueAsString);}
    if (this.getField("C.4."+i).value != "Off") {aRay4.push(this.getField("C.4."+i).valueAsString);}
    if (this.getField("C.5."+i).value != "Off") {aRay5.push(this.getField("C.5."+i).valueAsString);}
    }

    if (aRay1.length != 0){
    this.getField("Se1").value = "SE1 = {" + aRay1.join(", ") + "}";
    }
    else {this.getField("Se1").value = "SE1 =";}
    if (aRay2.length != 0){
    this.getField("Se2").value = "SE2 = {" + aRay2.join(", ") + "}";
    }
    else {this.getField("Se2").value = "SE2 =";}
    if (aRay3.length != 0){
    this.getField("Se3").value = "SE3 = {" + aRay3.join(", ") + "}";
    }
    else {this.getField("Se3").value = "SE3 =";}
    if (aRay4.length != 0){
    this.getField("Se4").value = "SE4 = {" + aRay4.join(", ") + "}";
    }
    else {this.getField("Se4").value = "SE4 =";}
    if (aRay5.length != 0){
    this.getField("Se5").value = "SE5 = {" + aRay5.join(", ") + "}";
    }
    else {this.getField("Se5").value = "SE5 =";}

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajouter numérotation après un ajout de page modèle #73251
    Merlin
    Maître des clés

    C’est très étrange…

    en réponse à : Ajouter numérotation après un ajout de page modèle #73248
    Merlin
    Maître des clés

    Chez moi ça ne fonctionne pas car par exemple avec le bouton page 2: prefix vaut “P1”, carvar pageIndex = this.pageNum;

    Et parce-que le compte de pageNum commence à zéro il faut ajouter +1

     

    Ce qui donne pour le bouton de la page 2 :

    var expTplt = getTemplate("p2");
    expTplt.spawn(this.pageNum+1,true,false);

    var newCount = parseInt(this.getField("counterP2").value + 3);
    this.getField("counterP2").value = newCount;

    var pageIndex = this.pageNum +1;
    var prefix = "P" + pageIndex;
    console.println("prefix: " + prefix); // retour console
    this.getField(prefix +".p2.p2_1").value = newCount;
    this.getField(prefix +".p2.p2_2").value = newCount + 1;
    this.getField(prefix +".p2.p2_3").value = newCount + 2;

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajouter numérotation après un ajout de page modèle #73243
    Merlin
    Maître des clés

    Je ne comprend pas si la numérotation de ces trois champs doit être continue dans tout le document ou bien est-ce qu’elle doit repartir à 1 dans chaque section/couleur ?

     

    L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ? Non, sinon qu’avec le navigateur de page

    Est-ce que ça fonctionne dans Acrobat Reader ?
    (Je ne peux pas tester)

    en réponse à : Ajouter numérotation après un ajout de page modèle #73241
    Merlin
    Maître des clés

    Bonjour JC

     

    En fait il me manque des éléments pour pouvoir te répondre.

    Les pages à dupliquer sont elles toutes identiques ou bien ont elles un contenu différent ?

    L’utilisateur a-t-il moyen de supprimer les pages dupliquées et si oui comment ?

     

    Une autre piste serait d’avoir les 12 pages en templates, chacune ayant déjà ses numéros, ses champs et son contenu figé. Ensuite il ne resterait plus qu’à les dupliquer une par une sans renommage des champs.

     

    en réponse à : Calque OCG afficher-masquer #73220
    Merlin
    Maître des clés

    C’est effectivement curieux, mais je ne suis pas l’auteur de ce script et je ne comprend pas comment il fonctionne, donc avant de l’exécuter j’y ajouterai une commande pour préalablement masquer tous les calques.

    if (event.willCommit) {
    var ocgArray1 = this.getOCGs();
    for (var i=0; i < ocgArray1.length; i++) {ocgArray1.state = false;}
    this.getOCGs().some(function(a){return a.state = (a.name==event.value);});
    }

    Et pour bien faire il faudrait soit supprimer l’intitulé “Choisir”, soit réafficher le calque 6 par défaut pour éviter d’avoir une page blanche.

     

    Merlin
    Maître des clés

    Est-possible avec le bouton RAZ de supprimer aussi le document joint ?

    La réponse est non mais tu trouveras comment faire et toutes les réponses à tes questions dans ce (long) sujet :

    Piece jointe et icône

     

    Merlin
    Maître des clés

    Acrobat Reader ne gère que les pièces jointes de type annotation qui sont nécessairement attachées à une page et à une icône (on peut placer l’icône en dehors de la page).

    Contrairement aux pièces jointes gérées au niveau du document.

    On accède à ces deux types de pièces jointes indistinctement dans le panneau Pièces Jointes.

    Merlin
    Maître des clés

    Exemple :

     

    this.addAnnot({
    page: 0, // numéro de page -1
    type: "FileAttachment", // type de l'annotation
    author: "abracadabraPDF.net", // auteur
    contents: "Double-clic pour ouvrir la pi\u00E8ce jointe", // infobulle
    attachIcon: "PushPin", // type d'icône
    point: [350,590], // position sur la page
    strokeColor: color.red, // couleur
    });

    Merlin
    Maître des clés

    Bonjour

     

    Ton script utilise this.importDataObject qui ne fonctionne qu’avec Acrobat Pro (ou Standard).

    Pour que ça fonctionne dans Acrobat Reader il faut utiliser this.addAnnot

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

    en réponse à : Ouvrir une page web de type data #73201
    Merlin
    Maître des clés

    👍

    en réponse à : Action automatisée pour ajouter une page à une autre #73192
    Merlin
    Maître des clés

    Bonjour

    • Le document “Verso” contient 9 pages identiques, plus une page (la première) qui est légèrement différente des 9 suivantes.
      Quelle(s) page(s) faut il importer ?

     

    • Est-ce que ces conditions sont bien respectées ?
      Nommer la page à ajouter : verso
      Ranger les fiches + verso dans le même répertoire
      Ouvrir verso

     

    • Par ailleurs s’agissant d’une opération aussi simple que l’ajout d’une page dans un document l’utilisation de l’Assistant Action me parait contre-productive car au final c’est plus long et ça demande plus de clics que d’importer simplement une page depuis le panneau des pages. (Voir capture ci-joint)
      Sauf, bien entendu, si vous utilisez cette action sur un lot de plusieurs documents. Est-ce le cas ?

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de visibilité de calques et champs de formulaires #73186
    Merlin
    Maître des clés

    👍

    en réponse à : Ouvrir une page web de type data #73185
    Merlin
    Maître des clés

    Ça c’est une question pour bebarth, il me semble bien qu’il a déjà fait quelque de ce genre par le passé.

    en réponse à : Script de visibilité de calques et champs de formulaires #73181
    Merlin
    Maître des clés

    Quand on clique sur le bouton Export la console renvoie une erreur dans la dernière (et 2e) boucle “for” du script contenu dans ce bouton :

    TypeError: f is null
    22:Field:Mouse Up

    C’est ce qui doit empêcher la fonction GestionCalques(), qui vient ensuite, de s’exécuter. Parce-qu’une erreur bloque le script, ce qui suit ne s’exécute pas.

     

    Dans ce script tu devrais remplacer :

    for (var i = 0; i < 25; i++) {
    var fname = this.getNthFieldName(i);
    var f = this.getField(fname);
    f.readonly = true;
    };

     

    Par :

    for (var i=0; i<this.numFields; i++) {
    var oFld = this.getField(this.getNthFieldName(i));
    oFld.readonly = true;
    }

    en réponse à : Ouvrir une page web de type data #73180
    Merlin
    Maître des clés

    Pas forcément, les pièces jointes ont des droits que n’ont pas les documents en ligne.

    À tester !

    en réponse à : Ouvrir une page web de type data #73175
    Merlin
    Maître des clés

    Bonjour JC

     

    La réponse est non, j’ai tout essayé, même en débloquant toutes les protections (https://helpx.adobe.com/fr/acrobat/using/allow-or-block-links-internet.html) ça ne fonctionne pas. Acrobat renvoie toujours les mêmes messages.

    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.

    et l’alerte ci-joint.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de visibilité de calques et champs de formulaires #73172
    Merlin
    Maître des clés

    Tout est bien, sauf le calque de boutons.

    Quand on masque tous les calques du document on voit tous les champs de formulaires qui ne sont pas attachés à un calque, dont les boutons (voir ci-joint).

    Donc il faut soit refaire le document dans InDesign en plaçant soigneusement les champs boutons sur le calque approprié (Acrobat ne sait pas gérer ça), soit gérer la visibilité des champs boutons en plus de celle du calque.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script de visibilité de calques et champs de formulaires #73171
    Merlin
    Maître des clés

    Aussi, est ce que vous avez un tips pour tester des documents avec Reader ? Car comme j’ai Creative Cloud et Acrobat Pro, Adobe ne me laisse pas installer Reader…

    Oui, comme je suis dans le même cas Adobe m’a forcé à installer Foxit Reader qui est son principal concurrent et j’ai découvert un excellent logiciel.

    Et comme un bonheur ne vient jamais seul, Foxit Reader force à être plus soigneux dans l’utilisation des scripts car il ne supporte pas les fonctions JavaScript obsolètes. Les documents y gagnent donc beaucoup en pérennité.

    😎

    en réponse à : Script de visibilité de calques et champs de formulaires #73169
    Merlin
    Maître des clés

    Pour impression numérique classique dans une imprimerie, généralement ils recommandent d’utiliser un profil CMJN pour éviter des couleurs trop flash quand on doit convertir le profil RVB en CMJN.

    C’est surtout pour éviter les réclamations des clients déçus qui ont envoyé des documents avec des couleurs RVB bien flashy, mais je suppose que ce n’est pas le cas de ce document. 😉

     

    Tout est bien, sauf le calque de boutons.

    Là il faudrait que tu partages (tout ou partie de) ce document pour qu’on puisse juger sur pièce.

    en réponse à : Script de visibilité de calques et champs de formulaires #73167
    Merlin
    Maître des clés

    Pour quel type d’impression, Offset ou imprimante ?

    En tout cas ça fait longtemps que les documents à imprimer sont conçus et exportés en RVB, ça permet d’exploiter au mieux le rendu colorimétrique de chaque procédé d’impression.

    en réponse à : Script de visibilité de calques et champs de formulaires #73165
    Merlin
    Maître des clés

    Astuce :

    Si les champs de formulaire sont créés dans InDesign sur les calques correspondants il s’affichent et se masquent en même temps que le calque auquel ils sont attachés, sauf…

    Sauf si on a eu le malheur de les déplacer ou de les couper/copier/coller dans Acrobat Pro, ce qui les “détache” de leur calque. Mais on peut modifier leurs propriétés sans problème avec Acrobat Pro, ils restent attachés à leur calque tant qu’on ne les déplace pas.

    en réponse à : Script de visibilité de calques et champs de formulaires #73164
    Merlin
    Maître des clés

    Bonjour

     

    Depuis InDesign il faut exporter en PDF interactif, pas en PDF impression.

    Le “dossier” de calques n’a aucune importance, ça ne change pas leur comportement ni les scripts à utiliser. On peut cependant le supprimer en utilisant cet utilitaire gratuit : https://www.uvsar.com/projects/acrobat/indesignfixups/

    Pour masquer le calque Grilles et repères (en Français) il faut éditer le script de cet utilitaire et y remplacer “Guides and Grids” par “Grilles et repères“. Mais ça n’a pas d’importance non plus, ce calque n’est pas gênant.

     

    Ton script ne fonctionne pas sur Reader car cette ligne :
    docOCGs.initState = true;
    provoque une erreur et donc l’arrêt de l’exécution du script, parce-que Acrobat Reader ne peut pas modifier l’état initial des calques (initState). Il ne permet que de les afficher/masquer (state) temporairement.

    Ce qui signifie qu’ils reviennent systématiquement à leur état initial à chaque réouverture du document. Pour remédier à cet inconvénient il faut utiliser le script proposé dans ce sujet : https://www.abracadabrapdf.net/forums/topic/enregistrer-la-visibilite-des-calques-ogc-apres-le-remplissage-du-formulaire/

     

     

    en réponse à : Lien vers un signet #73162
    Merlin
    Maître des clés

    👍

    en réponse à : Lien vers un signet #73157
    Merlin
    Maître des clés

    Quand il y a plusieurs champs ayant le même nom il faut s’adresser au “widget” et non pas au champ, qui dans ce cas représente plusieurs widgets.

    Dans la liste des champs du panneau des outils de formulaire les widgets apparaissent avec leur nom de champ, suivi d’un dièse et suivi d’un numéro d’ordre. Ce numéro d’ordre est attribué lors de la création du widget et n’est pas modifiable.

    Dans la capture ci-joint on ne voit pas le widget numéro zéro car il est masqué puisque la page modèle sur laquelle il se trouve est masquée. Si on affiche la page modèle les deux widgets sont visibles dans la liste.

     

    La particularité des widgets c’est qu’on ne peut pas s’adresser à eux directement, il faut impérativement passer par une variable. Sachant aussi que dans les scripts il faut remplacer le dièse par un point.

    Ce qui pour tes boutons nous donne les scripts suivants :

    var f = this.getField("CH1.1");
    f.setFocus();

    et

    var f = this.getField("CH2.1");
    f.setFocus();

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien vers un signet #73153
    Merlin
    Maître des clés

    “J’en conclu que les destinations sont perdues dès que l’on masque ou affiche une page modèle”

    Oui, c’est bien ça.

     

    “mais y a t-il donc un moyen de contourner ou de trouver une autre solution à ce problème ?”

    Il faut utiliser les numéros de page, ou sinon pour un pointage plus précis on peut envoyer le focus vers un champ, éventuellement masqué.

    this.getField("NOMDUCHAMPCIBLE").setFocus();

     

    en réponse à : Enregistrer un fichier #73152
    Merlin
    Maître des clés

    Bonjour

     

    Mac ou Windows ?

    Merlin
    Maître des clés

    PS : le script ci-dessus utilise un champ texte (masqué) nommé “CalqCode“, à placer n’importe où dans le document.

    Merlin
    Maître des clés

    Bonjour

     

    Avec Reader on ne peut pas aplatir ni modifier l’état de base (affiché/masqué) des calques.

    Il n’y a que deux solutions :

    • la signature numérique, qui fige le document.
    • utiliser JavaScript pour enregistrer l’état des calques à la fermeture et le rétablir à la réouverture du document.

     

    Exemple de script, la fonction GestionCalques() doit être utilisée lors de chaque modification de l’état des calques, ou bien en Action “Quand le document sera enregistré” (Document will save), et la fonction Ouverture() doit être exécutée à chaque ouverture du document :

     

    function GestionCalques() {
    ocg = this.getOCGs(this.pageNum);
    indexCalque = 0;
    code = "";
    while (indexCalque < this.ocg.length)
    {
    if (ocg[indexCalque].state)
    {
    code=code + "1";
    }
    else
    {
    code=code + "0";
    }
    indexCalque = indexCalque + 1;
    }
    this.getField("CalqCode").value = code;
    }

     

    function Ouverture() {
    ocg = this.getOCGs(this.pageNum);
    code = this.getField("CalqCode").valueAsString;
    indexCalque = 0;
    while (indexCalque<this.ocg.length)
    {
    statut = code.substring(indexCalque,(indexCalque+1));
    console.println("Rang " + indexCalque + " statut :" + statut)
    if (statut==1)
    {
    ocg[indexCalque].state=true;
    }
    else
    {
    ocg[indexCalque].state=false;
    }
    indexCalque = indexCalque+1;
    }
    }

    en réponse à : Fichier Réponses #73144
    Merlin
    Maître des clés

    Bonjour

     

    Il faut exporter les données du ficher Réponses au format CSV, reconnu par tous les tableurs, et faire le traitement des données dans un tableur.

     

    “Autre question en rapport, dans le fichier réponses, je peux déplacer les colonnes qui m’intéresse, mais même en enregistrant, à la nouvelle ouverture du fichier réponses, l’ordre des colonnes n’a pas été concervée?”

    Bienvenue chez Adobe !

    Spécialiste des interfaces et de l’expérience utilisateur, sauf dans Acrobat.

    😉

    en réponse à : Vidéo PDF interactif Indesign impossible #73141
    Merlin
    Maître des clés

    Bonjour

     

    Le problème ne vient pas d’InDesign.

    Le problème se sont les lecteurs de fichiers PDF, dont Acrobat, qui sont en dessous de tout.

    Ce problème a été signalé de nombreuses fois à Adobe depuis l’arrêt de Flash Player mais rien n’y fait. Quand on utilise Acrobat Pro pour placer une vidéo on a les mêmes problèmes et la documentation est trop succincte.

    Quand aux autres éditeurs…

     

    Le plus sur c’est d’utiliser Acrobat Pro pour placer la vidéo en pièce jointe dans le PDF et pour créer un lien pour la lancer.

    Ainsi elle s’affiche dans le lecteur vidéo par défaut, pas dans le lecteur de PDF.

    en réponse à : Mettre un deuxième script #73129
    Merlin
    Maître des clés

    “Cela ne fonctionne pas”

    Qu’est-ce qui ne fonctionne pas et pourquoi ?

    Il n’y a que des magiciens sur ce forum, mais aucun devin.

    en réponse à : Mettre un deuxième script #73126
    Merlin
    Maître des clés

    Bonjour

     

    Remplace la 2e ligne du script par :

    var distance = Number(this.getField("distance").value) + Number(this.getField("total").value);

     

    Par ailleurs c’est toujours une mauvaise idée de donner le même nom à un champ et à une variable, c’est source d’erreurs.

    en réponse à : Transfert de valeur #73121
    Merlin
    Maître des clés

    Bonjour

     

    Est-ce qu’il faut que la liste reprenne les valeurs contenues dans les champs 1, 2, 3 et 4 (si elles sont variables) ou bien peut-on reproduire ces valeurs directement dans la liste ?

    Pouvez vous partager (tout ou partie de) ce formulaire ?

     

    en réponse à : Code pour calculer heures, minutes, secondes #73118
    Merlin
    Maître des clés

    Du coup chat GT peut aller se rhabiller !

    😁

    en réponse à : Code pour calculer heures, minutes, secondes #73115
    Merlin
    Maître des clés

    Peux tu poster ce script ?

    en réponse à : masquer afficher des champs formulaires #73111
    Merlin
    Maître des clés

    😎

    en réponse à : masquer afficher des champs formulaires #73107
    Merlin
    Maître des clés

    Bonjour

     

    Quand on ouvre ce document la Console affiche ceci :

    TypeError: event.target.value.toFixed is not a function
    3:Field:Format

    Voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/console-javascript-d-acrobat/

     

    Pour moi le menu fonctionne normalement, mais il fonctionnerait encore mieux si l’option “Valider la valeur sélectionnée immédiatement” était cochée (onglet Options).

    Mais ce menu déroulant fait des calculs faux, pour un montant de 100 € on a : un 1er acompte de 60 €, un 2e acompte de 40 € et un 3e acompte de 10 €.

    Soit un total de 110 €, au moins tu as le sens des affaires ! 😀

     

    Concernant la virgule il faut utiliser un format “nombre” normal, la valeur de ce champ n’étant pas calculée le script de format ne sert à rien d’autre qu’à provoquer les erreurs qui s’affichent dans la console JS.

    Et il faudrait faire la même chose pour tous les champ situés au-dessus qui utilisent le point comme séparateur.

     

    Sinon “acompte” ne prend qu’un seul C.

    “Quantité” ne prend pas de E final.

    Et concernant les abréviations des adjectifs numéraux voir : https://www.academie-francaise.fr/abreviations-des-adjectifs-numeraux

    😉

     

     

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vider un champ formulaire à la fermeture #73104
    Merlin
    Maître des clés

    😎

    en réponse à : Vider un champ formulaire à la fermeture #73102
    Merlin
    Maître des clés

    1 Oui, il suffit de supprimer la condition dans le script qui remplit le champ date automatiquement, ainsi la nouvelle date écrasera l’ancienne à chaque ouverture du document.

    this.getField("validite").value=util.printd("dd/mm/yyyy", new Date(new Date().getTime()+(365*24*3600*1000)));

     

    2 Il faut utiliser ce script en évènement “Document a été imprimé” :

    this.getField("numero").value += 1;

    en réponse à : Calcul pourcentage #73099
    Merlin
    Maître des clés

    “on ne trouve pas forcément beaucoup de tutoriels sur internet concernant le javascript pour les formulaires interactif PDF.”

    Il y a beaucoup de tutos disponibles mais il faut lire l’Anglais ou savoir bien utiliser Googol Traduction.

    Commence ici : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/ressources-pdf-javascript/

    en réponse à : Calcul pourcentage #73092
    Merlin
    Maître des clés

    “si vous avez le bon script merci.”

    Tu à l’air têtu, mais moi aussi : c’est donc la 2e fois que je te dis que tu trouveras les réponses que tu cherches dans mon fichier joint.

    😎

    en réponse à : Code pour calculer heures, minutes, secondes #73075
    Merlin
    Maître des clés

    Désolé, je suis trop nul en math et je n’ai pas le temps de chercher.

    Mais si quelqu’un peut m’indiquer la formule de base pour calculer une telle moyenne je me ferai un plaisir de la convertir en JavaScript.

    en réponse à : Calcul pourcentage #73072
    Merlin
    Maître des clés

    Le fichier que j’ai joint est fonctionnel, examine bien les scripts de validation et les scripts de calculs. Tu y trouveras toutes les réponses.

    Qu’il y ait 2 champs à additionner pour le total ou qu’il en ait 50 le principe reste le même.

     

    Tu devrais aussi lire cet article car quand on utilise tes fichiers la Console JavaScript affiche des informations très instructives sur les erreurs rencontrées :

    La Console JavaScript d’Acrobat

    en réponse à : Calcul pourcentage #73059
    Merlin
    Maître des clés

    Je ne suis pas certain d’avoir compris la question (un peu touffue…) mais en tout cas j’ai une réponse. 😉

    Fichier fonctionnel ci-joint.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Code pour calculer heures, minutes, secondes #73055
    Merlin
    Maître des clés

    Quand j’ouvre ton fichier n°2 la console m’affiche cette erreur au moins 10 fois :

    TypeError: this.geField is not a function
    2:Field:Calculate

     

    Donc il faut commencer par remplacer geField par getField.

    Je n’aurai pas le temps aujourd’hui mais j’examinerai ça de plus près ce soir ou demain.

    en réponse à : Changer le libellé d’un bouton en cliquant dessus #73037
    Merlin
    Maître des clés

    Bonjour

     

    Où doivent apparaitre ces lettres ?

    Dans le libellé du bouton cliqué ou dans autre champ ?

    en réponse à : Code pour calculer heures, minutes, secondes #73035
    Merlin
    Maître des clés

    Du coup c’est encore plus simple.

    temps = distance / vitesse

     

    Donc dans le champ qui doit afficher le temps il faut placer ce calcul en notation simplifiée :

    distance / vitesse

    Si on part du principe que les champs se nomment “distance” et “vitesse”.

     

    Attention, le résultat est donné en heures décimales, il faudra ensuite éventuellement convertir en H:MM

    Voir : https://open.crea-learning.com/mod_turbolead/mod/crealearning/reader.php?n=OTA4MyYyOTEzMw%3D%3D

    en réponse à : Code pour calculer heures, minutes, secondes #73032
    Merlin
    Maître des clés

    Bonjour

     

    Sur le principe la réponse est oui, mais dans ton exemple il manque un opérateur : la vitesse.

    D’ailleurs il n’y a pas besoin de JavaScript, un calcul en notation simplifiée suffit :

    ((Texte1 * Texte2) / Texte3) / Texte4

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action ouvrir un lien web #73028
    Merlin
    Maître des clés

    Bonjour

     

    Place ce script en action Souris relâchée dans le champ texte :

    if (!/^\s*$/.test(event.target.value)) {app.launchURL(event.target.value);}

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

    Exemple ci-joint.

     

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

    Bonjour

     

    Il faut cocher l’option qui va bien dans les Options de la liste déroulante et utiliser ce script dans le champ texte :

    event.target.value = this.getField("NOMDUCHAMP").value;

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Texte en Helv Oblique #73020
    Merlin
    Maître des clés

    👍

    en réponse à : Javascript PDF archivable #73014
    Merlin
    Maître des clés

    Un tel script peut aussi être exécuté par une Action (Assistant Action).

    en réponse à : Javascript PDF archivable #73005
    Merlin
    Maître des clés

    this.saveAs("/c/myDocs/myDoc.pdf", "com.callas.preflight.pdfa");

     

    Erratum : comme cette fonction utilise le Contrôle en amont je suppose qu’elle ne fonctionne pas avec Acrobat Standard

    Tout est là, attention il y a des restrictions :

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

    en réponse à : Javascript PDF archivable #72999
    Merlin
    Maître des clés

    Bonjour

     

    La réponse est oui mais Acrobat Reader (logiciel gratuit) ne peut pas enregistrer en PDF normé (PDF/A ou autre), ça requiert Acrobat Pro ou Acrobat Standard.

    Même principe et même limitation chez Foxit, le principal concurrent.

    en réponse à : Document qui ne fonctionne plus… #72997
    Merlin
    Maître des clés

    PS : s’il s’agit de la valeur par défaut du menu déroulant on peut aussi utiliser :

    this.getField("Dropdown2").value = this.getField("Dropdown2").defaultValue;

    en réponse à : Document qui ne fonctionne plus… #72996
    Merlin
    Maître des clés

    Bonjour

     

    getItemAt ça sert à connaitre la valeur d’un menu, pas à lui assigner une valeur.

    Pour assigner une valeur à un menu déroulant il faut utiliser :

    this.getField("Dropdown").value = "Blablabla";

     

    Où “Blablabla” est la valeur d’exportation s’il y en a une, sinon c’est la valeur de l’item de menu qu’il faut utiliser.

    en réponse à : Valeur maximale #72969
    Merlin
    Maître des clés

    👍

    Pas mieux.

    en réponse à : Valeur maximale #72965
    Merlin
    Maître des clés

    Bonjour

     

    Il faut pour chaque rangée mettre toutes les valeurs dans un tableau (array), et ensuite utiliser par exemple sort() pour classer les éléments.

    Je n’ai pas plus de temps ce soir.

    Je reviendrai pour les détails. 😉

    en réponse à : Script FindChangeByList sur Indesign #72962
    Merlin
    Maître des clés

    Bonjour

     

    Oui c’est bien ce qu’il faut faire. La preuve c’est que ça fonctionne !

    Mais normalement l’espace après l’apostrophe est signalée par le correcteur orthographique, c’est pour ça que ce cas n’est pas prévu par le script.

    en réponse à : Données web vers PDF #72961
    Merlin
    Maître des clés

    Bonjour

     

    Tout dépend de ce que recouvre “données web” mais dans le temps on pouvait importer/exporter des données depuis un PDF vers un serveur en ligne.

    Avec beaucoup de restrictions bien entendu, sécurité oblige.

    en réponse à : Script textbox vers une autre textbox #72956
    Merlin
    Maître des clés

    Dans ce cas le mieux est de transférer les données entre les deux formulaires comme indiqué ci-dessus, et ensuite utiliser un script qui affecte la valeur “RAS” aux champs vides.

    en réponse à : Script textbox vers une autre textbox #72942
    Merlin
    Maître des clés

    Bonjour

     

    Je ne connais pas PDF XChange mais je suppose que comme avec Acrobat on peut exporter/importer les données d’un formulaire.

    Soit directement de PDF à PDF, soit indirectement en exportant les données au format FDF (ou XFDF).

    en réponse à : Ouverture Acrobat DC lente si connecté à Internet #72941
    Merlin
    Maître des clés

    Bonjour

     

    Je commencerais par : Préférences : Général : où je décocherais l’option “Afficher les messages d’Adobe…” (la 3e coche en partant du bas).

    Sans oublier de croiser les doigts…

    en réponse à : Horloge dans un dossier pdf #72939
    Merlin
    Maître des clés

    👍

Affichage de 99 réponses de 199 à 297 (sur un total de 10,236)