Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 2,377 à 2,475 (sur un total de 3,243)
  • Auteur
    Réponses
  • en réponse à : Calculs multiples à partir de cases cochées #64076
    bebarth
    Maître des clés

    bonjour,
    Peux-tu partager un fichier avec tes différentes cases ?
    Merci.
    @+
    :bonjour:

    bebarth
    Maître des clés

    Ça marche, mais… ça manque d’homomorphisme !

    Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.

    A mon avis, tu devrais écrire :

    Code:
    //…pour un icône à l’échelle 1/2
    r[2] = r[0]+(r[2]-r[0])/2;
    r[3] = r[1]+(r[3]-r[1])/2;

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Il faut mettre tes lignes en fin de script, sauf qu’avant il faut “re-scanner” les annotations.
    Sauf qu’avec r[2]=r[2]-5 et r[3]=r[3]-5, l’icône est diminué à chaque fois qu’on en rajoute un autre…
    Il faudrait donc lui donner directement sa taille avec r[2]=r[0]+largeur et r[3]=r[1]+hauteur (ici c’est bien un plus, car…)

    Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.

    …ça c’est faut ! Les coordonnées des l’icônes sont définis par le point inférieur gauche et le point supérieur droit (les champs sont définis par le point supérieur gauche et le point inférieur droit… il doit bien y avoir une explication mais je ne la connais pas).

    J’ai vérifié les tailles des icônes et elles ne sont effectivement pas identiques :
    Tombone = 7 x 17 pts
    Punaise =  20 x 16 pts
    Graphique = 20 x 20 pts
    Etiquette = 20 x 16 pts
    Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
    Ci-joint le dernier fichier avec affichage dans la console des dimensions.
    Dans ce fichier il faudra évidemment retirer les barres obliques et indiquer la largeur et la hauteur souhaitées.

    Code:
    //r[2] = r[0]+largeurSouhaitee;
    //r[3] = r[1]+hauteurSouhaitee;

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    C’est tout à fait exact. Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.
    Pour avoir la largeur de l’icône il faut donc faire r[2]-r[0] et pour avoir la hauteur r[1]-r[3] (le 0 est en bas à gauche).
    De tête, je ne connais pas exactement la largeur des icônes (il me semble qu’elle n’est pas identique pour tous), il faut donc faire attention de ne pas trop réduire !

    Si l’on veut placer l’icône à une position exacte par rapport au champ, j’avais écris un petit script dont je joint l’action pour connaitre exactement les coordonnées d’un champ.
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64066
    bebarth
    Maître des clés

    Le script de calcul est déclenché par le changement d’état d’un champ (celui-ci ou un autre). Merlin… des commentaires ?
    https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
    Lorsque le script est lancé il s’exécute entièrement. Donc si le script de calcul de ta liste est lancé, il va voir la valeur du bouton BR2 qui ne changera pas d’état pendant tout le script !
    Pour faire un peu plus court, tu peux écrire une formule en script de document et lancer cette formule sur chaque bouton.
    Par exemple, en script de document tu écris :

    Code:
    function maFormule()
    {
    if (this.getField(“BR2”).value==2) {
    this.getField(“BR2”).value=1;
    } else {
    this.getField(“BR2”).value=2;
    }
    this.getField(“Liste”).value=” “;
    }

    …et en script d’action du bouton radio tu écris juste :

    Code:
    maFormule();

    S’il y a des modifications ou du supplément de script, il n’y a juste à l’écrire dans le script de document. Si tu as 30 boutons, ça réduit pas mal le temps !

    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64064
    bebarth
    Maître des clés

    bonjour,
    Dans le fichier joint, j’ai mis un script de calcul sur le bouton droit BR1.

    Code:
    if (this.getField(“BR2”).value==2) {
    this.getField(“BR2”).value=1;
    } else {
    this.getField(“BR2”).value=2;
    }
    this.getField(“Liste”).value=” “;

    Donc, dans l’exemple uniquement lorsqu’on clique le bouton BR1 droit, le bouton BR2 change et la liste est remise sur ” “.
    J’ai remis les champs A, B et C sinon il y avait erreur…
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64061
    bebarth
    Maître des clés

    bonjour,

    Est-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?

    ça Merlin a répondu !

    Si, à chaque que je change la valeur du bouton radio1
    Alors, la Liste1 revient à sa valeur initial (et on peut encore changer la valeur de la Liste1 à la main)

    …et ça, ce serait bien que tu reformules et si possible que tu partages un fichier, car je ne suis pas certain de comprendre !
    A quoi servent les boutons radio ?
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64058
    bebarth
    Maître des clés

    non,mais on peut écrire :

    Code:
    switch (event.value < 55) {
        case true:
        this.getField(“Phot”).display = display.hidden;
        this.getField(“Phot.A”).display = display.visible;
        break;
        default:
        this.getField(“Phot”).display = display.hidden;
    }

    …je reviens plus tard pour les autres questions !
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64055
    bebarth
    Maître des clés

    bonjour,
    Ce n’est pas très évident à comprendre, car event.value représente la nouvelle valeur du champ, tandis que event.target.value représente la valeur actuelle du champ.
    https://forums.adobe.com/thread/2302153
    “Savoir quand utiliser l’un ou l’autre est compliqué…” c’est dit dans le texte !
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64053
    bebarth
    Maître des clés

    Je n’ai jamais eu de PC !  :extra:
    Apple II en 1980 et Mac depuis le 128k en 1984… et en 110 V. J’avais un transfo presque aussi gros que le Mac.

    Il y a eu des moments très durs début des années 90 ou le service informatique voulait supprimer mon mac. Grâce à mes collègues américains qui m’ont toujours soutenu, j’ai pu rester le seul Mac en France. Quel bonheur… comme ils n’y connaissent rien, j’ai tous les droits admin sur mes Mac’s. Je fais ce que je veux et je les sollicite uniquement pour l’achat de matériel ou logiciel. Et à chaque fois j’entends “Mac, c’est de la m….”. Au début ça m’énervais mais ça fait déjà un moment que ça glisse et que je pense “cause toujours, le principale c’est que j’ai mon Mac”. J’en ai d’ailleurs 3 sur mon bureau maintenant !
    @+
    :bonjour:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64051
    bebarth
    Maître des clés

    ??? je n’ai pas compris !
    :doute:

    en réponse à : Afficher ou cacher photos en fonction d’une liste #64049
    bebarth
    Maître des clés

    bonjour,
    moi quand il y a plein de if/else, je préfère l’expression switch qui pour moi me semble plus claire.

    Code:
    switch (event.value) {
        case “A”:
        this.getField(“Phot”).display = display.hidden;
        this.getField(“Phot.A”).display = display.visible;
        break;
        case “B”:
        this.getField(“Phot”).display = display.hidden;
        this.getField(“Phot.B”).display = display.visible;
        break;
        case “C”:
        this.getField(“Phot”).display = display.hidden;
        this.getField(“Phot.C”).display = display.visible;
        break;
        default:
        this.getField(“Phot”).display = display.hidden;
    }

    Mais ce n’est que mon opinion !
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Voici ma proposition avec cases à cocher.
    J’entends déjà Merlin dire qu’il n’aime pas cette fonction…
    @+
    :bonjour:

    bebarth
    Maître des clés

    Ce ne serait pas un lien ???
    @+
    :bonjour:

    bebarth
    Maître des clés

    Pour moi aussi, c’est ce qu’il y a de plus simple, mais :

    c’est bien ce que je pensais faire mais dans les propriétés de mon masque je n’ai pas script de calcul… :-(
    Dans les propriétés j’ai juste “général, aspect, position, option, action”

    …ce n’est donc pas un champ !
    Ce n’est pas non plus une annotation.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Qu’est-ce que le “masque c” pour toi ?
    Tu peux partager un exemple ?
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Voilà, j’ai un peu peaufiné le sujet avec un maximum de 5 pièces jointes !
    On pourrait encore l’améliorer et vérifier que les icônes ne soient pas hors pages…
    @+
    :bonjour:

    en réponse à : Champs calcuté entre deux dates #64043
    bebarth
    Maître des clés

    Tu remplaces la dernière ligne par celles-ci :

    Code:
    if (this.getField(“laDate1″).value !=”” && this.getField(“laDate2″).value !=””) {
    this.event.target.value=”La différence est de “+Math.abs(mois)+” mois.”;
    } else {
    this.event.target.value=””;
    }

    @+
    :bonjour:

    en réponse à : Champs calcuté entre deux dates #64041
    bebarth
    Maître des clés

    bonjour,
    Voici un script à placer en script de calcul du champ texte.

    Code:
    var str=this.getField(“laDate1”).valueAsString;
    var res = str.split(“/”);
    mois1=parseInt(res[1]);
    annee1=parseInt(res[2]);
    var str=this.getField(“laDate2”).valueAsString;
    var res = str.split(“/”);
    mois2=parseInt(res[1]);
    annee2=parseInt(res[2]);
    var mois= Math.abs(annee2-annee1)*12;
    if (annee2>annee1) {
    var mois = mois-12+(12-mois1)+mois2;
    } else {
    var mois = mois-12+(12-mois2)+mois1;
    }
    this.event.target.value=”La différence est de “+Math.abs(mois)+” mois.”

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,Une petite variante pour choisir l’icône et sa couleur.@+ :bonjour:

    bebarth
    Maître des clés

    boujour,Voici une rapide réponse pour un script de calcul du champ texte.N’hésite pas à me dire si tu ne comprends pas.@+ :bonjour: 

    bebarth
    Maître des clés

    bonjour,
    Voici un exemple pour faire apparaitre l’épingle (ou autre) à la gauche du bouton.
    Attention, le point à indiquer pour la position de l’icône est le supérieur gauche, et la taille de l’icône ne varie pas en fonction de l’affichage.
    Il faudra certainement ajuster la position Y en fonction de la hauteur du bouton.
    @+
    :bonjour:

    en réponse à : Liste déroulante Adobe Acrobat #63999
    bebarth
    Maître des clés

    c’est un peu plus compliqué parce qu’il faut imbriquer des boucles…

    Code:
    var nbExportListe1=this.getField(“ListeNiveau1”).value;
    var nbExportListe2=this.getField(“ListeNiveau2”).value;
    switch (nbExportListe1) {
        case 0: //Afrique
        switch (nbExportListe2) {
            case 0: //Algérie
            var nbAindiquer = 150;
            break;
            case 1: //Maroc
            var nbAindiquer = 125;
            break;
            //etc.
        }
        break;
        case 1: //Europe
        switch (nbExportListe2) {
            case 0: //France
            var nbAindiquer = 1000;
            break;
            case 1: //Allemagne
            var nbAindiquer = 500;
            break;
            case 2: //Italie
            var nbAindiquer = 750;
            break;
            case 3: //Espagne
            var nbAindiquer = 300;
            break;
            //etc.
        }
        break;
        case 2: //Amérique du nord
        switch (nbExportListe2) {
            case 0: //USA
            var nbAindiquer = 10;
            break;
            case 1: //Canada
            var nbAindiquer = 50;
            break;
            //etc.
        }
        break;
        //etc.
    }
    this.event.target.value= nbAindiquer;

    mais avec un bon éditeur de JavaScript ça se fait !
    @+
    :bonjour:

    en réponse à : Liste déroulante Adobe Acrobat #63997
    bebarth
    Maître des clés

    …il faut lire :

    Code:

    default:

    et non “delault:”, ce qui ne veut rien dire  :geek:

    Merlin,
    il m’est maintenant impossible de modifier une de mes réponse (je crois après un certain temps), même s’il n’y a pas eu d’autres réponses…

    @+
    :bonjour:

    en réponse à : Liste déroulante Adobe Acrobat #63996
    bebarth
    Maître des clés

    bonjour,
    Tu écris un petit script de calcul pour ton champ texte

    Code:
    var nbExportListe=this.getField(“ListeNiveau2”).value;
    switch (nbExportListe) {
    case 0: //France
    var nbAindiquer = 1000;
    break;
    case 3: //Espagne
    var nbAindiquer = 300;
    break;
    delault:
    var nbAindiquer = 0;
    }
    this.event.target.value= nbAindiquer;

    …et tu n’oublies pas de cocher “Valider les valeurs sélectionnées immédiatement” en option de la liste déroulante.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Dans un premier temps je te propose de regarder ce post :

    Dans l’exemple joint il y a un bouton “Enregistrer” …qui enregistre et un bouton “Enregistrer sous” qui enregistre avec les nouvelles valeurs des champs “ref” et “Horodatage”. J’espère que tu sauras l’adapter pour ton fichier.
    @+
    :bonjour:

    …et de voir si tu peux l’adapter à ton problème (ouverture d’une fenêtre qui demande le nom avec lequel tu veux enregistrer ton fichier sous…).
    @+
    :bonjour:

    en réponse à : Signets des pages masquées #63906
    bebarth
    Maître des clés

    bonjour,
    …du coup, je partage quand même l’exemple avec un script que j’avais écris si ça peut servir à quelqu’un !
    @+
    :bonjour:

    en réponse à : Signets des pages masquées #63901
    bebarth
    Maître des clés

    bonjour,
    Lorsque l’on masque une page, le signet correspondant perd sont action. Avec un script, il faut donc recréer cette action lorsque l’on fait réapparaitre la page.
    Sinon tu pourrais renommer le signet (avec un tiret par exemple) lorsque tu masques la page, ou mettre la couleur du signet en blanc… ou les deux !!!
    Je crois qu’il faudrait trouver la couleur exacte, car lorsqu’on met le texte du signet en blanc on arrive à le lire ! le fond ne doit pas être tout à fait blanc, parce que plus blanc que blanc, je ne vois pas…
    @+
    :bonjour:

    en réponse à : Formatage nombre en timecode #63868
    bebarth
    Maître des clés

    bonjour,
    un petit screeshot vaut mieux qu’un long discours !
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Voici une proposition où l’on peut choisir la couleur du texte avec un bouton radio.
    Est-ce de cette manière que tu voulais pouvoir modifier la couleur ?
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63761
    bebarth
    Maître des clés

    bonjour,

    Il ne peut pas être incorporé au fichier pdf ?

    si, tu pourrais le mettre en action d’un signet par exemple !
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63759
    bebarth
    Maître des clés

    bonjour,
    Apparemment non, je ne crois pas que le fichier ait un souci ! C’est un fichier action (zippé).
    Il faut le décompresser et double-cliquer pour l’installer.
    Si tu l’utilises avec le fichier joint (par exemple), tu lances l’action et ça fonctionne bien !
    @+
    :bonjour:

    en réponse à : Numéro de document automatique #63769
    bebarth
    Maître des clés

    Pour commentaires !

    bonjour,
    Pas de commentaires ???  :doute:
    On oubli et on passe à autre chose alors !
    @+
    :bonjour:

    en réponse à : Comment compter des boutons radio #63864
    bebarth
    Maître des clés

    …dans le principe c’est ça qu’il faut faire ! mais au lieu coller x fois le script, tu créé un script de document “calcul” par exemple, ensuite tu le rappelles uniquement avec calcul();
    c’est plus pratique lorsqu’il y a des modifications à faire. ça évite de les recoller partout…
    @+
    :bonjour:

    en réponse à : Comment compter des boutons radio #63862
    bebarth
    Maître des clés

    bonjour,
    As-tu compris le principe ?
    @+
    :bonjour:

    en réponse à : Comment compter des boutons radio #63860
    bebarth
    Maître des clés

    bonjour,
    Voici un petit script pour te permettre de compter les différentes options choisies :

    Code:
    var totalA=0;
    var totalB=0;
    var totalC=0;
    for ( var i=0; i    var fname = this.getNthFieldName(i);
        if (this.getField(fname).type == “radiobutton” ) {
            var valeur = this.getField(fname).value;
            switch (valeur) {
                case “A”:
                totalA++;
                break;
                case “B”:
                totalB++;
                break;
                case “C”:
                totalC++;
            }
        }
    }
    app.alert(“Boutons radio trouvés :u0020u000Du0020″+ totalA + ” option(s) A.u0020u000Du0020″+ totalB + ” option(s) B.u0020u000Du0020″+ totalC + ” option(s) C.”,1)

    @+
    :bonjour:

    en réponse à : Afficher / Masquer des pages dans un fichier #63551
    bebarth
    Maître des clés

    bonjour,
    Comme ça je ne vois pas ! il faudrait voir le fichier… sur le dernier fichier que j’avais joint (exemple-test_BB1.pdf) ça fonctionne, non ???
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63756
    bebarth
    Maître des clés

    bonjour,

    Avez-vous une idée de comment mettre en pratique ?

    J’ai écris un petit script qui supprime les pages qui possèdent un champ dont le nom contient “ACC_FR”.

    Code:
    var test = “ZERO”;
    var pagesAsupprimer = new Array();
    // On teste tous les noms des champs
    for (var i = 0; i < this.numFields; i++) {
        var fname = this.getNthFieldName(i);
        // Page relative au champ
        var fpage = this.getField(fname).page;
        // Ici on teste si le nom du champ con tient ACC_FR
        var str = fname;
        var n = str.indexOf(“ACC_FR”);
        // Si ACC_FR a été trouvé et la page n’est pas identique à la précédente trouvée
        if (n > -1 && fpage != test) {
            pagesAsupprimer.unshift(fpage);
            var test = fpage;
        }
    }
    // On remet les numéros de pages dans l’ordre décroissant
    pagesAsupprimer.sort(function(a, b){return b-a});
    // On supprime les pages trouvées dans l’ordre de la table (sens inverss)
    for (var i = 0; i < pagesAsupprimer.length; i++) {
        this.deletePages({nStart: pagesAsupprimer});
    }

    Il faudra adapter le script selon le nom des champs à tester !
    @+
    :bonjour:

    en réponse à : Afficher / Masquer des pages dans un fichier #63549
    bebarth
    Maître des clés

    bonjour,

    Si je veux afficher à l’ouverture du fichier une des 2ème, 3ème, 4ème page cachées dès le départ il ne se passe rien tant que je n’ai pas affiché la première !?!

    Je ne suis pas certain de comprendre !
    Tu veux afficher directement la page cochée ???
    Si c’est cela, tu retires

    Code:
    this.pageNum=pg;

    en fin de chaque script de checkbox.

    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63751
    bebarth
    Maître des clés

    bonjour,
    Tu peux sélectionner uniquement le texte compris entre l’underscore “_” et le point “.”

    Code:

    var str = fname;
    var n = str.indexOf(“_”);
    var nn = str.indexOf(“.”);
    var Pays = str.slice(n+1,nn);

    …et là il peut y avoir autant de chiffres qu’il est possible !
    @+
    :bonjour:

    en réponse à : Formulaire en ligne et calcul #63829
    bebarth
    Maître des clés

    bonjour,
    Comme tu as pu le constater, le JavaScript ne fonctionne pas pour les formulaires ouverts dans un navigateur…
    Il faut les importer en local.
    @+
    :bonjour:

    en réponse à : Formulaire : liste déroulante qui définit un texte #63809
    bebarth
    Maître des clés

    …en vacances, sans ordi ni wifi !!!
    @+

    :bonjour:

    en réponse à : Formulaire : liste déroulante qui définit un texte #63805
    bebarth
    Maître des clés

    Si c’est possible je souhaite que ça soit pas une case texte mais une deuxième liste déroulante afin de choisir directement DT ou TM si l’on veux, mais qu’il mettent automatiquement DT ou TM en fonction de A B C .

    …je n’ai donc pas bien compris !
    :geek:

    en réponse à : Formulaire : liste déroulante qui définit un texte #63803
    bebarth
    Maître des clés

    bonjour,
    Si j’ai bien compris, il faut que tu fasses une recherche sur le forum sur “liste mère fille”.

    Je sais pas si c’est possible ça me parait compliqué x)

    …je te confirme, ce n’est pas par le plus simple que tu commences !
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63749
    bebarth
    Maître des clés

    bonjour,
    …sinon, on peut tester les pages qui possèdent au moins un champ comprenant “.ACC_” (par exemple), et on supprime ces pages !
    @+
    :bonjour:

    en réponse à : formulaire #63801
    bebarth
    Maître des clés

    bonjour,
    c’est un bouton radio qu’il te faut pour choisir soit le choix 1 soit le choix 2 !
    En script du bouton radio du choix 1 tu écris :

    Code:
    this.getField(“Nom”).display=display.visible;
    this.getField(“Prenom”).display=display.visible;
    this.getField(“Adresse1”).display=display.visible;
    this.getField(“Societe”).display=display.hidden;
    this.getField(“Representant”).display=display.hidden;
    this.getField(“Adresse2”).display=display.hidden;

    …et en script du bouton radio du choix 2 tu écris… l’inverse !
    @+
    :bonjour:

    en réponse à : Numéro de document automatique #63768
    bebarth
    Maître des clés

    bonsoir,
    Voici ma proposition.
    Tu places les 3 dossiers inclus dans “monDossier” où tu veux, mais dans le même répertoire (ENV, ECO et Compteurs).
    Tu places le fichier “Save_NumAuto.js” en script d’application.
    Tu installes l’action “Nume?rotation Automatique.sequ”.
    Lorsque tu lances l’action à partir d’un fichier inclus dans ENV ou ECO, tu devrais avoir ce que tu recherchais…
    Pour commentaires !
    @+
    :bonjour:

    en réponse à : Calcul et format "field" #63781
    bebarth
    Maître des clés

    …je n’avais pas vu “en français” !
    https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp
    @+
    :bonjour:

    en réponse à : Calcul et format "field" #63780
    bebarth
    Maître des clés

    …pour en savoir un peu plus :
    https://www.w3schools.com/jsref/jsref_obj_regexp.asp
    @+
    :bonjour:

    en réponse à : Calcul et format "field" #63778
    bebarth
    Maître des clés

    bonjour,
    En script de calcul de ton champ “nombre de bouteilles” tu écris :

    Code:
    if (this.event.target.value <= 18) {
    this.getField(“P_Tr”).value = (this.event.target.value*2)+”,00 €”;
    } else {
    this.getField(“P_Tr”).value = “OFFERT”;
    }

    En script de touche (toujours pour ce champs) tu écris :

    Code:
    var regxp=/^[0-9]$/;
    if(!event.willCommit) {
        if(event.change.length>0 && regxp.test(event.change)==false)
            {
            app.beep(0);
            event.rc=false;
            }
        }

    …pour ne tenir compte des nombres positifs !
    @+
    :bonjour:

    en réponse à : Numéro de document automatique #63766
    bebarth
    Maître des clés

    bonjour,
    Le numéro d’incrémentation est-il commun pour les 2 répertoires ENV et ECO.
    Quel sera le logiciel de l’utilisateur ? Acrobat pro ou Adobe Reader ?
    Je regarde ça un peu plus tard…
    @+
    :bonjour:

    en réponse à : Numéro de document automatique #63763
    bebarth
    Maître des clés

    bonjour,
    S’il n’y a pas d’autres réponses avant, ce ne sera que demain pour t’aider…
    On est d’accord que tous les utilisateurs on les droits d’écritures dans les répertoires !
    La zone “Num_Doc” dont tu parles est un champ je suppose.


    Le premier dossier s’appel “ENV”.
    Le second s’appel “ECO”.

    J’aimerais également que lorsqu’il enregistre le formulaire, le formulaire soit enregistré sous avec pour titre le Num_Doc.

    Les fichiers sont enregistrés dans le même répertoire ???
    Ce sera au moins un script d’action pour pouvoir enregistrer les documents !
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63742
    bebarth
    Maître des clés

    bon ben voilà,
    J’ai mis une fonction en script de document que j’appelle en script d’ouverture de page :

    Code:
    function symbol()
    {
    var laPage = this.pageNum;
    var fpage = -1;
    var Pays=””;
    var i = 0;
    try {
        while (fpage != laPage) {
        var fname = this.getNthFieldName(i);
        var fpage = this.getField(fname).page;
        i++;
        }
        var str = fname;
        var n = str.indexOf(“_”);
        var Pays = str.slice(n+1,n+3);
        app.alert({cMsg:”Le code pays est “+Pays+”.”, nIcon:2});
        } catch(e) {
            app.alert({cMsg:”Il n’y a pas de code pays en page “+(laPage+1)+”.”, nIcon:2});
            };
    }

    Si tu colle le script d’ouverture de page sur chaque template, il sera présent pour chaque nouvelle page créée.
    Ici il y a un message d’alerte, Il faudra adapter à ce que tu veux faire…
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63740
    bebarth
    Maître des clés

    dernier point : FR, US, BE… sont des pays je présume.
    Y a-t-il toujours uniquement 2 lettres ??? sont-elles toujours situées au même endroit : en fin du nom de champs ou  après l’underscore “_” par exemple ???
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63738
    bebarth
    Maître des clés

    ben, on va dire que c’est moyen clair pour moi !
    Est-ce que tu veux récupérer l’info à chaque fois que tu ajoutes une page ou sur un document entier ?
    Ou ajoutes-tu cette page ? en première page, en dernière page, n’importe où ???
    @+
    :bonjour:

    en réponse à : Nom du template ou nom d’un champ avec regex #63736
    bebarth
    Maître des clés

    bonjour,

    Est-ce que c’est possible de récupérer le FR qui se trouve dans le nom du template ?

    Qu’entends-tu par là ??? Normalement, si tu rajoutes une page via un template, tu connais son nom, non !!!
    Comment rajoutes-tu la page ?
    @+
    :bonjour:

    en réponse à : Mettre en surbrillance la cellule active #63734
    bebarth
    Maître des clés

    …pas besoin de script de document !
    Tu écris ceci directement soit en action champ activé/désactivé  soit en souris entrée/sortie :

    Code:
    if (this.event.target.fillColor == “RGB,1,0,0”) {
    this.event.target.fillColor = [“RGB”, 1,1,0];
    } else {
    this.event.target.fillColor = [“RGB”, 1,0,0];
    }

    Ici, ton erreur est que lorsque l’on lit la couleur du champ, la valeur retournée est “RGB,1,0,0” et non “[RGB”,1,0,0]”. Ça c’est la syntaxe pour écrire la couleur du fond.
    @+
    :bonjour:

    en réponse à : Mettre en surbrillance la cellule active #63732
    bebarth
    Maître des clés
    bebarth
    Maître des clés

    bonjour,
    Je voudrais bien essayer de t’aider, mais je ne connais pas LiveCycle Designer et ton fichier est protégé donc impossible de lire les scripts, les noms de champs et le template (je suppose) et de voir ce qui se passe…
    N’est-il pas possible d’écrire un script d’ouverture de page qui reprendrait le numéro de facture et la date pour les afficher dans la nouvelle page ! C’est ce que j’avais fait pour un autre formulaire.
    @+
    :bonjour:

    bebarth
    Maître des clés

    …voici le script commenté.
    J’ai rajouté une boucle while pour être certain de n’indiquer qu’un nombre positif !

    Code:
    //On met les instruments et les valeurs par défaut dans une table
    var Instruments = [“Violon I”, “8”, “Violon II”, “7”,”Alto”, “6”, “Violoncelle”, “5”, “Contrebasse”, “4”];
    //On créé le template
    var t = this.createTemplate ({nPage:0, cName:”Couv”});
    //On commence la boucle avec modulo i+2 car les instruments sont tous les 2 éléments dans la table
    for (var i = 0; i < Instruments.length; i = i+2) {
        //Instruments est le nom de l’instrument dans la table
        var Inst = Instruments;
        //Instruments est le nombre de copies par défaut dans la table
        var nb = Instruments;
        //J’ai rajouté une boucle pour être certain de ne prendre en compte que des nombres, et positifs
        while (bb<1 | isNaN(bb)) {
            var bb = app.response({
                cQuestion: “Combien souhaitez-vous générer de parties de “+Inst+” ?”,
                cTitle: “Nombre de parties”,
                cDefault: nb
                });
            //On conertit le chaine en nombre
            var nbreCopies = parseFloat(bb);
        }
        //On remet le nombre à 0 pour pouvoir recommencer la boucle while pour le prochain instrument
        var bb = 0;
        //Boucle pour ajouter le nombre de pages indiqué
        for (var a = 1; a <= nbreCopies; a++) {
            //On ajoute une page
            this.spawnPageFromTemplate (“Couv”, “”, true, false);
            //Premier champ nommé avec le nom de l’instrument
            //Si le nom était commun pour tous les instruments, la valeur (donc le nom de l’instrument) changerait à chaque boucle
            var f = this.addField(Inst,”text”,0,[0,50,594,100]);
            f.value = Inst;
            f.alignment = “center”;
            f.textSize = 40;
            f.textColor = color.black;
            f.textFont = font.Helv;
            //Deuxième champ nommé différemment pour chaque page
            //idem que pour le nom des champs Instruments
            var f = this.addField(Inst+”ZoneCopies”+a,”text”,0,[525,800,585,830]);
            f.value = a + “/” + nbreCopies;
            f.alignment = “right”;
            f.textSize = 20;
            f.textColor = color.black;
            f.textFont = font.Helv;
        }
    }
    //On supprime la page qui a servi de template et qui se trouve en dernière page
    this.deletePages(this.numPages-1);
    //On inverse l’ordre des pages
    for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
    //On affiche la première page
    this.pageNum = 0;
    //…et on enregistre sous !
    this.saveAs({cPath:”/C/Users/…/Desktop/CouvCordes.pdf”});
    //Fini !!!

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Dis-moi si tu veux que je commente le script !
    @+
    :bonjour:

    en réponse à : JS – Action à réaliser en fonction d’une CheckBox #63724
    bebarth
    Maître des clés

    Pourquoi ???
    Il ne fonctionne pas bien ?
    @+
    :bonjour:

    en réponse à : JS – Action à réaliser en fonction d’une CheckBox #63722
    bebarth
    Maître des clés

    bonjour,
    si tu essayes d’écrire “this/getField…” tu auras vite fait la réponse !!!

    Sinon, pour la case à cocher, on peut aussi écrire :

    Code:
    if (event.target.isBoxChecked(0)) {
    // script à exécuter;
    } else {
    // script à exécuter;
    }

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    …la boucle ! (sans être désobligeant  :geek: ).

    Code:
    var Instruments = [“Violon I”, “8”, “Violon II”, “7”,”Alto”, “6”, “Violoncelle”, “5”, “Contrebasse”, “4”];
    var t = this.createTemplate ({nPage:0, cName:”Couv”});
    for (var i = 0; i < Instruments.length; i = i+2) {
        var Inst = Instruments;
        var nb = Instruments;
        var nbreCopies = app.response({
            cQuestion: “Combien souhaitez-vous générer de parties de “+Inst+” ?”,
            cTitle: “Nombre de parties”,
            cDefault: nb
            });
        for (var a = 1; a <= nbreCopies; a++){
            this.spawnPageFromTemplate (“Couv”, “”, true, false);
            var f = this.addField(Inst,”text”,0,[0,50,594,100]);
            f.value = Inst;
            f.alignment = “center”;
            f.textSize = 40;
            f.textColor = color.black;
            f.textFont = font.Helv;
            var f = this.addField(Inst+”ZoneCopies”+a,”text”,0,[525,800,585,830]);
            f.value = a + “/” + nbreCopies;
            f.alignment = “right”;
            f.textSize = 20;
            f.textColor = color.black;
            f.textFont = font.Helv;
        }
    }
    this.deletePages(this.numPages-1);
    for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
    this.pageNum=0;
    this.saveAs({cPath:”/C/Users/…/Desktop/CouvCordes.pdf”});

    @+
    :bonjour:

    en réponse à : Mes outils ont disparu ! #63713
    bebarth
    Maître des clés

    Bonjour,
    Regarde si on ne t’a pas installé une version Acrobat Standard au lieu d’une version Pro…
    @+
    :bonjour:

    bebarth
    Maître des clés

    Je n’ai pas beaucoup de temps en ce moment, mais j’essaierai de t’écrire le script dans les prochains jours.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Pour moi, dans ton script, tu rajoutes le template au dessus de la dernière page. Essaye :

    Code:
    this.spawnPageFromTemplate (“Couv”, 0, false, false)

    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104

    …et une petite boucle avec le nom des instruments dans une table éviterait d’écrire 5 fois la même chose, non !!!
    @+
    :bonjour:

    en réponse à : Addition horaire PDF (Javascript) #63032
    bebarth
    Maître des clés

    vous êtes un dieu!!!!….

    Faut pas exagérer !!! Etre Grand Magicien me convient plus qu’honorablement.
    @+
    :bonjour:

    bebarth
    Maître des clés

    « ON » n’est pas forcément Merlin !!!

    :Smiley00:

    bebarth
    Maître des clés

    On pourrait les rajouter…

    bebarth
    Maître des clés

    bonjour,
    Avant de me relancer dans un script qui ne correspondrait pas à ce que tu veux, pourrais-tu me donner quelques précisions.
    Tu as donc un fichier partition et un fichier couverture que tu voudrais imprimer en “X” exemplaires avec la couverture personnalisée.
    As-tu réellement besoin d’un fichier final compilant toutes ces versions, ou juste d’une action qui permette d’imprimer les différentes versions ?
    Veux-tu comme le propose Merlin insérer cette couverture en “template” qui te permettrait de l’afficher ou pas selon les besoins ???

    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63654
    bebarth
    Maître des clés

    bonjour Merlin,
    Le tuto que tu indiques répondrait plus à un autre post où j’avais répondu car il extrait les pages contenant un même mot et enregistre ce mot comme nom de fichier.
    https://abracadabrapdf.net/forum/index.php/topic,3410.msg20094.html#msg20094

    Ici, le problème est un peu différent. On teste les mots qui sont après et sur la même ligne que le mot COMMUNE ou SECTEUR et on prend tous ces mots pour former un nom (de ville et de fichier). C’est pourquoi j’avais demandé s’il n’y avait pas d’autres mots sur la même ligne, sinon impossible de savoir ou s’arrête le nom de la ville.
    @+
    :bonjour:

    en réponse à : Récupération de texte avec Adobe Acrobat Pro #63687
    bebarth
    Maître des clés

    bonjour Merlin,
    Pareil pour moi, c’est pourquoi j’ai fourni des fichiers .docx et .rtf ne sachant ce que disposait bendesarts comme logiciel(s).
    @+
    :bonjour:

    en réponse à : Addition horaire PDF (Javascript) #63030
    bebarth
    Maître des clés

    bonjour,
    Voici ce que j’ai en adaptant le script qui était dans le post indiqué.
    Si le JavaScript est du charabia pour toi, j’espère que tu sauras te dépatouiller avec ça car je n’ai pas beaucoup de temps pour expliquer en ce moment… et les opérations de temps ne sont pas ce qui est de plus simple pour débuter !
    Mais s’il doit y avoir quelques adaptations c’est faisable quand même !
    @+
    :bonjour:

    en réponse à : Addition horaire PDF (Javascript) #63029
    bebarth
    Maître des clés

    bonjour,
    Comment remplis-tu les heures ? Ce sont des champs j’espère ???
    Je suppose qu’il faut remplir les heures d’arrivée et de départ !
    Le total heures semaines est le total de toutes les lignes ???
    @+
    :bonjour:

    en réponse à : Récupération de texte avec Adobe Acrobat Pro #63685
    bebarth
    Maître des clés

    bonjour,
    je n’ai pas eu de problème, mais mieux vaudrait “Enregistrer sous un autre…” ton fichier !
    Je te joins les fichiers docx et rtf.
    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63652
    bebarth
    Maître des clés

    bonsoir,
    Là, ça devrait marcher qu’il y ait ou pas des mots sur la page et qu’il y ait COMMUNE/SECTEUR ou pas !

    Code:
    console.show();
    console.clear();
    //Début durée
    d0=new Date();
    debut=util.printd(“dd-mm HH:MM”,d0);
    console.println(“Début process:”+debut);
    //Initialisation des variables
    var Chemin = this.path;
    var PathSansExt = Chemin.substring(0,Chemin.length-4);
    var nomDocument = this.documentFileName;
    var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
    for (var p = 0; p < this.numPages; p++) {
        var ville = “”;
        var ckWord = “”;
        var i = 0;
        //recherche du mot COMMUNE
        var numWords = this.getPageNumWords(p);
        console.println(“La page:”+(p+1)+” comporte “+ numWords +” mots”);
        if (numWords > 0) {
        try {
            while (ckWord != “COMMUNE” && ckWord != “SECTEUR”) {
                var ckWord = this.getPageNthWord(p, i, true);
                //Coordonnées du mot
                var q = this.getPageNthWordQuads(p, i);
                // convert quads in default user space to rotated
                // user space used by Links.
                m = (new Matrix2D).fromRotated(this,p);
                mInv = m.invert()
                r = mInv.transform(q) //Coordonnées champ du mot trouvé
                r=r.toString() //Conversion en chaîne
                r = r.split(“,”); //Séparation de la chaîne à chaque virgule “,”
                //Position verticale du mot
                var posVert = r[3];
                i=i+1;
            }
            var posMot = posVert;
            while (posMot == posVert) {
                var ckWord = this.getPageNthWord(p, i, true);
                //Coordonnées du mot
                var q = this.getPageNthWordQuads(p, i);
                // convert quads in default user space to rotated
                // user space used by Links.
                m = (new Matrix2D).fromRotated(this,p);
                mInv = m.invert()
                r = mInv.transform(q) //Coordonnées champ du mot trouvé
                r=r.toString() //Conversion en chaîne
                r = r.split(“,”); //Séparation de la chaîne à chaque virgule “,”
                //Position verticale du mot
                var posMot = r[3];
                i=i+1;
                if (posMot == posVert) {var ville = ville + ” ” + ckWord;}
            }
            var str = ville;
            var debutVille = ville.substring(0,1);
            if (debutVille ==” “) {
                var res = str.slice(2);
            } else {
                var res = str.slice(1);
            }
            var ville = res;
            if (ckWord == “COMMUNE”) {
                console.println(“Commune : “+ville);
            } else {
                console.println(“Secteur : “+ville);
            }
            if (ville != “”) {
                this.extractPages({
                    nStart: p,
                    cPath: repertoire+ville+”.pdf”
                    });
            }
        } catch(e) {
            app.alert({cMsg:”La page “+ (p+1) + ” ne contient ni COMMUNE ni SECTEUR.”, nIcon:2});
            }
        }
    }
    //Fin durée
    df=new Date();
    fin=util.printd(“dd-mm HH:MM”,df);
    console.println(“Fin process:”+fin);
    delta=(df.valueOf()-d0.valueOf())/1000/60;
    console.println(“Duree process:”+delta+” minutes”);

    Si tu ne veux pas le message d’alerte, tu enlève la ligne

    Code:
            app.alert({cMsg:”La page “+ (p+1) + ” ne contient ni COMMUNE ni SECTEUR.”, nIcon:2});

    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63650
    bebarth
    Maître des clés

    …pas d’erreur de mon côté avec le fichier que tu avais fourni, mais je n’ai pas pris en compte la possibilité par exemple qu’une page soit vierge.
    Cette possibilité est-elle envisageable ??? Il faudrait peut-être rajouter des fonctions “try” !!!
    Je ne sais pas si je pourrai regarder ça ce soir… trop de boulot (je suis sur une vidéo Adobe Première très urgente -> pour samedi).
    Sinon demain matin !
    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63648
    bebarth
    Maître des clés

    Bon ben on va prendre le problème différemment.
    On cherche COMMUNE ou SECTEUR sur l’original et on extrait la page.

    Code:
    console.show();
    console.clear();
    //Début durée
    d0=new Date();
    debut=util.printd(“dd-mm HH:MM”,d0)
    console.println(“Debut process:”+debut)
    //Initialisation des variables
    var Chemin = this.path;
    var PathSansExt = Chemin.substring(0,Chemin.length-4);
    var nomDocument = this.documentFileName;
    var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
    for (var p = 0; p < this.numPages; p++) {
        var ville = “”;
        var ckWord = “”;
        var i = 0;
        //recherche du mot COMMUNE
        var numWords = this.getPageNumWords(p);
        while (ckWord != “COMMUNE” && ckWord != “SECTEUR”) {
            var ckWord = this.getPageNthWord(p, i, true);
            //Coordonnées du mot
            var q = this.getPageNthWordQuads(p, i);
            // convert quads in default user space to rotated
            // user space used by Links.
            m = (new Matrix2D).fromRotated(this,p);
            mInv = m.invert()
            r = mInv.transform(q) //Coordonnées champ du mot trouvé
            r=r.toString() //Conversion en chaîne
            r = r.split(“,”); //Séparation de la chaîne à chaque virgule “,”
            //Position verticale du mot
            var posVert = r[3];
            i=i+1;
            }
        var posMot = posVert;
        while (posMot == posVert) {
            var ckWord = this.getPageNthWord(p, i, true);
            //Coordonnées du mot
            var q = this.getPageNthWordQuads(p, i);
            // convert quads in default user space to rotated
          // user space used by Links.
            m = (new Matrix2D).fromRotated(this,p);
            mInv = m.invert()
            r = mInv.transform(q) //Coordonnées champ du mot trouvé
            r=r.toString() //Conversion en chaîne
            r = r.split(“,”); //Séparation de la chaîne à chaque virgule “,”
            //Position verticale du mot
            var posMot = r[3];
            i=i+1;
            if (posMot == posVert) {var ville = ville + ” ” + ckWord;}
            }
        var str = ville;
        var debutVille = ville.substring(0,1);
        if (debutVille ==” “) {
            var res = str.slice(2);
        } else {
            var res = str.slice(1);
        }
        var ville = res;
        console.println(“Commune : “+ville);
       
        if (ville != “”) {
            this.extractPages({
                nStart: p,
                cPath: repertoire+ville+”.pdf”
                });
        }
    }
    //fin duree
    df=new Date();
    fin=util.printd(“dd-mm HH:MM”,df)
    console.println(“Fin process:”+fin)
    delta=(df.valueOf()-d0.valueOf())/1000/60
    console.println(“Duree process:”+delta+” minutes”)

    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63646
    bebarth
    Maître des clés

    …parce que j’ai essayé :

    Code:
    var d = app.activeDocs;
    for( var i in d )
    if( d != this ) d.closeDoc();

    et ça ne fonctionne pas non plus !!! enfin les fichiers se ferments tous à la fin… :mur:
    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63644
    bebarth
    Maître des clés

    bonjour,
    J’avais effectivement remarqué que tous les fichiers se fermaient en fin de script alors que closeDoc(); est en fin de boucle, mais je ne savais pas que tu avais autant de documents…
    Comme ça, je ne sais pas comment faire, mais je vais regarder !

    Pour rechercher soit COMMUNE soit SECTEUR, tu modifies cette ligne :

    Code:
        while (ckWord != “COMMUNE” && ckWord != “SECTEUR”) {

    ça devrait fonctionner ! et pas besoin de rajouter “2” car un simple caractère n’est pas considéré comme un mot !
    Je te tiens au courant si je trouve pour fermer les fenêtre une à une.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,

    …me génère autant de fichiers que de couvertures…

    c’est ce que j’avais cru comprendre !

    là je ne comprend plus bien. Les partitions des instruments à cordes sont différentes et proviennent de fichiers différents ? ou d’un seul ficher ?
    A quoi correspond la question “Combien voulez-vous générer de parties ?” est-ce “…de copies ?”

    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Voici le script que je te propose et qui reprend les indications que j’ai trouvées dans ton script. La position des champs créés est à définir plus précisément. J’ai mis de l’Helvetica en police car je ne connais pas le nom à indiquer pour Garamond…

    Je pense que l’idée proposée par Merlin est plus logique car tu peux définir les champs que tu veux où tu veux et faire une mise en page un peu plus sophistiquée…
    Sinon, on peu aussi créer un fichier “couverture” que l’on vient insérer en première page à la place de cette page blanche qui ne comporte que 2 blocs de textes !

    Je te joins également l’action Acrobat.

    Code:
    //Initialisation des variables
    var Chemin = this.path;
    var PathSansExt = Chemin.substring(0,Chemin.length-4);
    var nbreParties = 0;
    //Questions
    var nomInstrument = app.response({
        cQuestion: “Saisissez le nom de l’instrument :”,
        cTitle: “Instrument”,
        cDefault: “Violon”
        });
    while (nbreParties<1 | isNaN(nbreParties)) {
        var nbreParties = app.response({
            cQuestion: “Combien voulez-vous générer de parties ?”,
            cTitle: “Nombre de parties”,
            cDefault: “1”
            });
        var a = parseFloat(nbreParties);
    }
    for (i=1; i<=a; i++) {
    // Nouveau document
    var newDoc = app.newDoc();
    //Pages insérées
    newDoc.insertPages( {
        nPage: newDoc.numPages-1,
        cPath: this.path,
        nStart: 0,
        nEnd: this.numPages-1
        });
       
    // Construction des champs texte
    var f = newDoc.addField(“Zone_Num”, “text”, 0, [200,250,250,400] )
    f.value = i + “/” + nbreParties; // Texte du bas de page
    f.alignment = “center”; // Alignement du texte
    f.textSize = 20; // Corps du texte
    f.textColor = color.black; // Couleur du texte
    f.textFont = font.Helv; // Police du texte
       
    var f = newDoc.addField(“Zone_Instrument”, “text”, 0, [400,400,300,300] )
    f.value = nomInstrument; // Texte du bas de page
    f.alignment = “center”; // Alignement du texte
    f.textSize = 20; // Corps du texte
    f.textColor = color.black; // Couleur du texte
    f.textFont = font.Helv; // Police du texte
           
    //Enregistrement
    newDoc.saveAs(PathSansExt+” (“+nomInstrument+” “+i+” sur “+nbreParties+”).pdf”);
    newDoc.closeDoc();
    }

    @+
    :bonjour:

    en réponse à : Addition horaire PDF (Javascript) #63027
    bebarth
    Maître des clés

    bonsoir,
    regarde ce post :
    https://abracadabrapdf.net/forum/index.php/topic,3092.msg17935.html#msg17935
    et si tu ne comprends pas, partage un fichier en explicant exactement ce que tu souhaiterais faire.
    @+
    :bonjour:

    en réponse à : Traitement par lots #63682
    bebarth
    Maître des clés

    bonjour,
    Ce que je ferais, c’est créer une action composée de 2 actions “Réduire la taille du fichier” et “Enregistrer” avec option “optimisation PDF”, puis lorsque tu lances l’action, tu choisis soit “Ajouter des fichiers” soit “Ajouter un dossier”.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Si je comprend bien, c’est le document initial complet auquel tu rajoutes une couverture numérotée !
    Sur la couverture, il n’y a que les 2 zones de textes ???
    Effectivement, les syntaxes JavaScript d’Acrobat ne sont pas exactement celles que tu as utilisées.
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FJavaScript_API.htm
    J’essaye de regarder ça pour demain.
    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63642
    bebarth
    Maître des clés

    …le plus simple pour connaitre le chemin à indiquer :

    1. Tu places un fichier à l’endroit où tu veux enregistrer tes nouveaux fichiers avec les noms des communes
    2. Tu ouvres ce fichier avec Acrobat
    3. Tu ouvres la console (cmd J sur mac, ce doit être ctrl J sur PC)
    4. Tu tapes “this.path;” puis la touche enter du clavier numérique
    5. Le chemin du fichier s’affiche dans la console
    6. Tu copies ce chemin, sans le nom du fichier
    7. Dans le script, tu modifies cette ligne
    8. [/list]
      Code:
      newDoc.saveAs(repertoire+ville+”.pdf”);

      en

      Code:
      newDoc.saveAs(“le chemin copié”+ville+”.pdf”);
        …en mettant les guillemets.
    9. [/list]Normalement, si tu as les droits dans le répertoire, ça devrait fonctionner.
      @+
      :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63640
    bebarth
    Maître des clés

    bonjour,
    Voici en pièce jointe le fichier action que je te propose.
    Ici, j’extrais la page avant de rechercher le mot COMMUNE puis les mots qui suivent pour composer le nom de la commune. Cela implique donc que l’on doit trouver le mot “COMMUNE” sur toutes les pages. Si ce n’est pas le cas il faudra réorganiser le script.
    Si tu n’as pas de sous à dépenser et que tu es prêt à te prendre un peu la tête, essaye cette action…
    Pour ma part, je me suis effectivement un peu “pris la tête”, car à force de prendre des petits bouts de scripts à droite à gauche, on arrive à prendre des variables de mêmes noms et ça ne le fait pas… Mais bon, j’ai connu des prises de têtes bien plus compliquées !!!
    Tu me dis ce que tu en penses et si le mot “COMMUNE” n’est pas obligatoirement sur toutes les pages, on fera différemment.
    @+
    :bonjour:

    en réponse à : Fractionnement doc et enregistrement avec nom spécifique #63637
    bebarth
    Maître des clés

    bonjour,
    A mon avis c’est faisable, mais ça demande un peu de boulot !
    A ce que je comprend les noms de communes ne sont pas des champs.
    Sur la même ligne de texte que celui du nom de la commune, peut-il y avoir d’autres textes ???? en gros, comment savoir si le nom de commune comporte un ou plusieurs mots ???
    J’essaie de voir ça lundi.
    Bon weekend.
    @+
    :bonjour:

    en réponse à : rafraichissement de calcul JS #63634
    bebarth
    Maître des clés

    bonjour,
    Le propre du bouton radio est de pouvoir lui attribuer plusieurs valeurs selon le bouton coché, ce qui évite d’avoir plusieurs variables…
    Essaye d’adapter ce script de calcul (j’espère ne m’être pas trompé dans les formules) :

    Code:
    var a1 = this.getField(“rang”).value;
    var tx = this.getField(“taux”).value;
    var bt = this.getField(“bouton”).value;
    switch (bt) {
        case “boutonGauche”:
        if (a1 >> 1) {
            var res = a1*3.5;
        } else {
            var res = 3.5;
        }
        break;
        case “boutonDroit”:
        if (a1 >> 0) {
            var res = 250+(a1-2)*50;
        } else {
            var res = 250
        }
    }
    if (a1 == 0) var res = 0;
    this.event.target.value = res * tx;

    Pour ma part, je ne suis pas professeur de JavaScript, mais je ne suis pas favorable à supprimer le “this.” même si on ne travaille qu’avec un seul fichier ouvert et qu’il peut paraître inutile.
    @+
    :bonjour:

    bebarth
    Maître des clés

    bonjour,
    Si le document doit être ouvert plusieurs fois, il faudrait peut-être rajouter une ligne pour supprimer le script de document :

    Code:
    app.execMenuItem(“SaveAs”);
    this.removeScript(“monScript”); // “monScript” est le nom du script de document créé

    sinon, à chaque ouverture, on aura la fenêtre d’enregistrement sous…
    @+
    :bonjour:

    en réponse à : Enregistrement partiel d’un document #63612
    bebarth
    Maître des clés

    J’avais fait ce fichier dans un post précédent.
    Regarde si on pourrait l’adapter à ton problème.
    @+
    :bonjour:

    en réponse à : Enregistrement partiel d’un document #63605
    bebarth
    Maître des clés

    …oui, mais le formulaire généré pour envoyer au client est fait à partir d’Acrobat Pro ou d’Adobe Reader ?
    @+
    :bonjour:

    en réponse à : Interdire la modification après sauvegarde #63629
    bebarth
    Maître des clés

    Je viens de m’apercevoir que je t’ai dis une bêtise…
    en script de document, il faut écrire :

    Code:
    var ok = “OK”;

    sinon, plus de message !

    Lorsqu’on aplati les champs, ce ne sont plus des champs (donc plus modifiables). Les valeurs des champs sont assimilées à du texte.
    fait un essai et tu comprendras certainement mieux.
    @+
    :bonjour:

    en réponse à : Interdire la modification après sauvegarde #63626
    bebarth
    Maître des clés

    bonjour,
    Je te conseille déjà de faire des essais sur des copies de fichiers….
    Si tu enregistres et que ton fichier n’est pas aplati, tu auras ce message (cf. copie d’écran).
    Si OUI, les champs sont aplatis tu ne peux donc plus les modifier. Si NON tu peux encore les modifier.
    Lorsque les champs sont aplatis, il n’y a plus de message !
    @+
    :bonjour:

    en réponse à : Enregistrement partiel d’un document #63603
    bebarth
    Maître des clés

    bonjour,
    et quelle sera l’utilisation finale ? avec Adobe Reader ???
    @+
    :bonjour:

    en réponse à : Interdire la modification après sauvegarde #63623
    bebarth
    Maître des clés

    bonjour,
    Je ne sais pas ce que pensera Merlin sur le principe, mais si tu colles :

    Code:
    var ok = “pas OK”;

    en script de document, et ce script :

    Code:
    try {
        if (ok==”OK”) {
            var enreg = app.alert({
                cMsg: “u0041u0076u0065u007Au002Du0076u006Fu0075u0073u0020u0074u0065u0072u006Du0069u006Eu00E9u0020u0064u0065u0020u0072u0065u006Du0070u006Cu0069u0072u0020u006Cu0065u0020u0066u006Fu0072u006Du0075u006Cu0061u0069u0072u0065u0020u003Fu000Du0020u000Du0041u0054u0054u0045u004Eu0054u0049u004Fu004Eu000Du0020u000Du2022u0020u0053u0069u0020u004Fu0055u0049u0020u0076u006Fu0075u0073u0020u006Eu0065u0020u0070u006Fu0075u0072u0072u0065u007Au0020u0070u006Cu0075u0073u0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u002Eu000Du2022u0020u0053u0069u0020u004Eu004Fu004Eu0020u0076u006Fu0075u0073u0020u0070u006Fu0075u0072u0072u0065u007Au0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u0020u0075u006Cu0074u00E9u0072u0069u0065u0075u0072u0065u006Du0065u006Eu0074u002E”,
                cTitle: “Formulaire rempli”,
                nIcon: 2, nType: 2
                });
                if (enreg==4) {
                this.flattenPages();
                this.removeScript(“ok”);
                this.addScript(“ok”, “var ok = “pas OK”;”);
                }
            }
        } catch(e) {}

    en script d’action, cela devrait correspondre à ce que tu veux faire tout en permettant l’enregistrement si le formulaire n’est pas définitivement complété !
    Pour commentaires…
    @+
    :bonjour:

    en réponse à : Enregistrement partiel d’un document #63601
    bebarth
    Maître des clés

    …pas mieux !!!
    Maintenant que tu sais comment on fait, lorsqu’on indique les 2 paramètres on peut simplifier l’expression par :
    this.deletePages(5,7);
    this.deletePages(1,3);
    On est obligé de spécifier nStart ou nEnd que lorsqu’on indique un seul paramètre.
    @+
    :bonjour:

    en réponse à : Enregistrement partiel d’un document #63592
    bebarth
    Maître des clés

    bonjour,
    Non, impossible !
    app.newDoc() et saveAs() ne peuvent être exécutés avec un script de bouton.
    @+
    :bonjour:

Affichage de 99 réponses de 2,377 à 2,475 (sur un total de 3,243)