Donnez vie à vos documents numériques !
 

Script pour ajouter un bouton avec action Page suivante sur fichiers pdf

abracadabraPDF Forums PDF – Général Script pour ajouter un bouton avec action Page suivante sur fichiers pdf

  • Créateur
    Sujet
  • #46671
    ctanguy
    Participant

    Bonjour,
    Je cherche un javascript ou autre processus d'automatisation qui me permettrait d'ajouter sur un lot de fichiers pdf un bouton avec un lien sur la page suivante, afin d'éviter de le faire manuellement ou de le copier-coller sur chaque fichier.
    Sur Mac et Acrobat DC
    Meci
    Ctang

Affichage de 14 réponses de 1 à 14 (sur un total de 14)
  • Auteur
    Réponses
  • #69698
    bebarth
    Maître des clés

    bonjour,
    Pas besoin de script.
    Tu crées ton bouton sur la première page, puis clic droit et “Dupliquer dans toutes les pages”.
    @+
    8)

    #69699
    Merlin
    Maître des clés

    Bonjour
    Je crois que c'est typiquement un bouton qui ne sert pas à grand-chose car il existe déjà par défaut au-dessus de tous les documents.
    Il y a aussi un raccourci-clavier.

    #69700
    ctanguy
    Participant

    Bonjour,
    Effectivement, je peux ajouter le bouton sans problème sur les pages du document.
    Mais c'est une fonction que je cherche à automatiser  pour tout un lot de fichiers pdf contenus dans un dossier.
    Cordialement
    Ctang

    #69701
    Merlin
    Maître des clés

    Dans ce cas le plus simple est d’utiliser ce script dans une Action, après l’avoir personnalisé, ensuite on peut appliquer l’Action sur un lot de fichiers.

    // CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
    for (var p = 0; p < this.numPages; p++) {
        // Position du rectangle
        var aRect = this.getPageBox( {nPage: p} );
        // aRect[0] = zéro car on est dans la CROP box
        aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
        aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
        aRect[1] -= .5*inch;  // 0,5 cm from the top of page
        // aRect[3] = zéro car on est dans la CROP box
        aRect[3] = aRect[1] - 15; // and 15 points high
        var f = this.addField("btPageSuiv", "button", p, aRect )
        f.setAction("MouseUp", "pageSuiv()");
        f.userName = "Page suivante"; // infobulle
        f.display = display.noPrint;
        f.borderStyle = border.s;
        f.highlight = "none";
        f.textSize = 0; // 0 = corps automatique
        f.textColor = color.black;
        f.fillColor = color.white;
        f.strokeColor = color.transparent;
        f.textFont = font.Helv; // Helvetica
        f.buttonSetCaption(">>>"); // flèche vers la droite
    }
    • Cette réponse a été modifiée le il y a 2 années et 6 mois par JR Boulay.
    #70075
    ctanguy
    Participant

    Bonsoir,

    je viens de retrouver le script envoyé sur le nouveau site, mais  sur mac système Monterey avec Acrobat 2021, j’ai le code erreur suivant :ReferenceError: nPosBt6 is not defined 6:Document-Level:bouton ReferenceError: nPosBt6 is not defined 6:Document-Level:bouton ReferenceError: nPosBt6 is not defined 6:Document-Level:bouton ReferenceError: nPosBt6 is not defined 6:Batch:Exec ReferenceError: nPosBt6 is not defined 6:Batch.

    Quelle correction je peux y apporter ?

    Cordialement

    CTanguy

    #70076
    Merlin
    Maître des clés

    En fait il manquait la première ligne, qui défini la variable “nPosBt6”.

    Du coup j’ai testé et j’ai remplacé les “>>>” par leur équivalent Unicode car ça buggait (en dernière ligne).

     

    // POSITION BOUTON "PAGE SUIVANTE"
    var nPosBt6 = 1.5; // cm à partir du bord DROIT de la page, ce bt fait 1 cm de large

    // CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
    for (var p = 0; p < this.numPages; p++) {
    // Position du rectangle
    var aRect = this.getPageBox( {nPage: p} );
    // aRect[0] = zéro car on est dans la CROP box
    aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
    aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
    aRect[1] -= .5*inch; // 0,5 cm from the top of page
    // aRect[3] = zéro car on est dans la CROP box
    aRect[3] = aRect[1] - 15; // and 15 points high
    var f = this.addField("btPageSuiv", "button", p, aRect)
    f.setAction("MouseUp", "pageSuiv()");
    f.userName = "Page suivante"; // infobulle
    f.display = display.noPrint;
    f.borderStyle = border.s;
    f.highlight = "none";
    f.textSize = 0; // 0 = corps automatique
    f.textColor = color.black;
    f.fillColor = color.white;
    f.strokeColor = color.black;
    f.textFont = font.Helv; // Helvetica
    f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
    }

    #70094
    ctanguy
    Participant

    Bonjour,

    je pense qu’il doit encore manquer  une variable je suppose, j’ai cette nouvelle erreur :

    ReferenceError: inch is not defined 8:Batch:Exec ReferenceError: inch is not defined 8:Batch:Exec

    Merci

    ctanguy

    #70096
    Merlin
    Maître des clés

    Cette fois j’ai testé avec un Acrobat tout juste ouvert et donc débarrassé de toute variable fantôme, il y en avait deux autres 😱

     

    // POSITION BOUTON "PAGE SUIVANTE"
    var nPosBt6 = 1.5; // multiplicateur
    var inch = 28.3; // unité de base, ce qui fait 1 inch = 1 centimètre

    // CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
    for (var p = 0; p < this.numPages; p++) {
    // Position du rectangle
    var aRect = this.getPageBox( {nPage: p} );
    aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
    aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
    aRect[1] -= .5*inch; // 0,5 cm from the top of page
    aRect[3] = aRect[1] - 15; // and 15 points high
    var f = this.addField("btPageSuiv", "button", p, aRect)
    f.setAction("MouseUp", "this.pageNum++");
    f.userName = "Page suivante"; // infobulle
    f.display = display.noPrint;
    f.borderStyle = border.s;
    f.highlight = "none";
    f.textSize = 0; // 0 = corps automatique
    f.textColor = color.black;
    f.fillColor = color.white;
    f.strokeColor = color.black;
    f.textFont = font.Helv; // Helvetica
    f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
    }

    #70097
    ctanguy
    Participant

    Merci, c’est parfait,  je peux le personnaliser en couleur, dimensions, et pages.
    Une dernière question si c’est simple,
    pour remplacer (“\u003E\u003E\u003E”), par une image, c’est possible ?
    comme dans les formulaires.
    Ctangu

     

     

    #70098
    Merlin
    Maître des clés

    Ajoute cette ligne juste avant la dernière accolade , il faut indiquer le chemin d’accès au fichier icône (qui peut aussi être en PNG ou JPG) :

    f.buttonImportIcon("/F/pdfs/monIcone.pdf");

    #70099
    ctanguy
    Participant

    Si je retire le chemin d’accès, j’ai bien l’interface qui me demande de sélectionner l’icône, mais au final j’ai toujours le bouton avec >>>

    et dans les propriétés du bouton tracé, j’ai libellé uniquement.
    faut-il une autre fonction pour indiquer icône uniquement ?

    Ctanguy

     

    #70100
    Merlin
    Maître des clés

    Pour avoir un bouton avec “texte sur icône” (à ajouter avant la dernière ligne) :

    f.buttonPosition = position.overlay; // texte sur icône

     

     

    Pour ne pas avoir le texte (les flèches) il faut supprimer ou désactiver cette ligne :

    f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite

    #70101
    ctanguy
    Participant

    Bonjour,

    en ajoutant
    f.buttonPosition = position.overlay;  et en désactivant le texte c’est OK.

    Merci

    Claire

     

    #70103
    Merlin
    Maître des clés

    😎

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