abracadabraPDF › Forums › PDF – Général › Script pour ajouter un bouton avec action Page suivante sur fichiers pdf
- Ce sujet contient 14 réponses, 3 participants et a été mis à jour pour la dernière fois par
Merlin, le il y a 3 années et 4 mois.
-
CréateurSujet
-
14 octobre 2021 à 14:26 #46671
ctanguy
ParticipantBonjour,
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 -
CréateurSujet
-
AuteurRéponses
-
14 octobre 2021 à 16:23 #69698
bebarth
Maître des clésbonjour,
Pas besoin de script.
Tu crées ton bouton sur la première page, puis clic droit et “Dupliquer dans toutes les pages”.
@+
14 octobre 2021 à 20:26 #69699Merlin
Maître des clésBonjour
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.15 octobre 2021 à 08:38 #69700ctanguy
ParticipantBonjour,
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
Ctang15 octobre 2021 à 09:47 #69701Merlin
Maître des clésDans 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 3 années et 5 mois par
JR Boulay.
6 décembre 2021 à 22:57 #70075ctanguy
ParticipantBonsoir,
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
7 décembre 2021 à 13:28 #70076Merlin
Maître des clésEn 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
}
9 décembre 2021 à 11:49 #70094ctanguy
ParticipantBonjour,
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
9 décembre 2021 à 13:52 #70096Merlin
Maître des clésCette 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
}
9 décembre 2021 à 16:42 #70097ctanguy
ParticipantMerci, 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.
Ctangu9 décembre 2021 à 17:08 #70098Merlin
Maître des clésAjoute 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");
9 décembre 2021 à 17:40 #70099ctanguy
ParticipantSi 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
9 décembre 2021 à 22:34 #70100Merlin
Maître des clésPour 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
10 décembre 2021 à 11:35 #70101ctanguy
ParticipantBonjour,
en ajoutant
f.buttonPosition = position.overlay; et en désactivant le texte c’est OK.Merci
Claire
10 décembre 2021 à 17:11 #70103Merlin
Maître des clés😎
-
Cette réponse a été modifiée le il y a 3 années et 5 mois par
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.