Donnez vie à vos documents numériques !
 

Dupliquer des boutons

abracadabraPDF Forums PDF – Général Dupliquer des boutons

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

    Bonjour, j’aimerais pouvoir dupliquer des boutons avec une ligne de code.

    En gros sur chaque page j’ai des boutons qui se nomment LinkT.a.b qui sont placés à une hauteur de 23.8 mm de haut sur ma page et j’aimerais que ceux-ci soient dupliqués juste en dessous à une hauteur de 16.4 mm

    En dessous du bouton LinkT.a.0 devra se trouver LinkT.a.8

    En dessous du bouton LinkT.a.1 devra se trouver LinkT.a.9

    …..

    En dessous du bouton LinkT.a.7 devra se trouver LinkT.a.15

    J’ai commencé manuellement mais je dois faire cela sur 23 pages encore et c’est long…

    J’ai mis juste une page en exemple

    Merci

     

    Attachments:
    You must be logged in to view attached files.
Affichage de 5 réponses de 1 à 5 (sur un total de 5)
  • Auteur
    Réponses
  • #75861
    Merlin
    Maître des clés

    Bonjour

     

    J’imagine que les boutons doivent avoir un nom différent sur chacune des pages, c’est bien ça ?

    #75862
    michel c.
    Participant

    Effectivement, le 1er indice (a) des noms de boutons LinkT.a.b n’est pas le même sur chaque page.

    #75863
    Merlin
    Maître des clés

    Dans le PDF ci-joint j’ai renommé les boutons en remplaçant le “5” par un “A” pour ne pas que le script bugge à partir la page 6, mais je pense que tu sauras l’adapter à tes documents.

    Ce script duplique les boutons de la page 1 (zéro) sur toutes les autres pages du document.

    À copier-coller dans la console :

    // POUR BOUTONS LinkT
    for (var j = 0; j < 8; j++) {
    var b = this.getField("LinkT.A." +j);
    var aRect = b.rect; // stocke rect
    // console.println("\naRect" + j + ": " + aRect);
    for (var p = 1; p < this.numPages; p++) { // de la 2e à la dernière page
    var f = this.addField("LinkT."+p+"."+j, "button", p, aRect )
    f.setAction("MouseUp", "//"); // action à placer dans le bouton
    f.borderStyle = border.s; // contour ligne
    f.strokeColor = color.black; // couleur du contour
    f.highlight = highlight.i; // comportement inversé
    f.textSize = 0; // corps automatique
    f.textColor = color.black; // couleur texte
    f.fillColor = color.ltGray; // couleur de fond
    f.textFont = font.Helv; // police helvetica
    f.buttonSetCaption("...") // Label
    }
    }

    // POUR BOUTON AjouT
    var b = this.getField("AjouT.A");
    var aRect = b.rect; // stocke rect
    // console.println("\naRect" + j + ": " + aRect);
    for (var p = 1; p < this.numPages; p++) { // de la 2e à la dernière page
    var f = this.addField("AjouT."+p, "button", p, aRect )
    f.setAction("MouseUp", "//"); // action à placer dans le bouton
    f.borderStyle = border.s; // contour ligne
    f.strokeColor = color.black; // couleur du contour
    f.highlight = highlight.i; // comportement inversé
    f.textSize = 0; // corps automatique
    f.textColor = color.black; // couleur texte
    f.fillColor = color.ltGray; // couleur de fond
    f.textFont = font.Helv; // police helvetica
    f.buttonSetCaption("Ajouter lien") // Label
    }

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

    On peut éventuellement aussi reprendre les attributs des boutons existants plutôt que de les réécrire, ça fait un script un peu plus long mais si tu l’utilises sur plusieurs documents ou plusieurs types de boutons se sera plus pratique.

    Par-contre on ne peut pas reprendre les actions des boutons, il faut forcément les réécrire.

    Exemple :

    // POUR BOUTONS LinkT
    for (var j = 0; j < 8; j++) {
    var b = this.getField("LinkT.A." +j);
    var aRect = b.rect; // stocke rect
    var contour = b.borderStyle;
    var coulContour = b.strokeColor;
    var comport = b.highlight;
    var corps = b.textSize;
    var coulTexte = b.textColor;
    var coulFond = b.fillColor;
    var poliss = b.textFont;
    var label = b.buttonGetCaption();

    for (var p = 1; p < this.numPages; p++) { // de la 2e à la dernière page
    var f = this.addField("LinkT."+p+"."+j, "button", p, aRect )
    f.setAction("MouseUp", "//"); // action à placer dans le bouton
    f.borderStyle = contour; // contour
    f.strokeColor = coulContour; // couleur du contour
    f.highlight = comport; // comportement
    f.textSize = corps; // corps
    f.textColor = coulTexte; // couleur texte
    f.fillColor = coulFond; // couleur de fond
    f.textFont = poliss; // police
    f.buttonSetCaption(label) // Label
    }
    }

    #75874
    michel c.
    Participant

    Merci beaucoup, j’ai pu faire ce que je voulais et j’ai gagné beaucoup de temps …

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