Donnez vie à vos documents numériques !
 

Répondre à : Script JS – Duplication de pages et incrémentation sur chaque.

abracadabraPDF Forums PDF – Général Script JS – Duplication de pages et incrémentation sur chaque. Répondre à : Script JS – Duplication de pages et incrémentation sur chaque.

#63669
jojoe
Membre

Bonjour,

Oui, oui, pardon, j’ai fait un exemple pour illustration de ce que je voulais et ai effectivement utilisé l’outil texte et non un champ de formulaire.
Quoiqu’il en soit, je suis parvenu avec vos conseils à obtenir ce que je voulais donc tout est bon.
D’ailleurs, j’ai un peu adapté le processus initial après l’avoir montré à mes collègues. En effet, il n’y a plus de saisie du nom d’instrument. Le script va générer les couvertures pour tous les instruments (Violons, Altos, Violoncelles et Contrebasses). Pour chaque, on demande simplement le nombre de copies souhaitées.

Juste un petit problème que je n’ai pas réussi à résoudre… ou du moins en bidouillant… je voulais que les pages issues du Template créé préalablement soient insérées à la suite

Code:
this.getTemplate(« Couv »).spawn({nPage:this.numPages});

. Et je ne sais pas pourquoi toute les pages se mettent dans le bon ordre, sauf la dernière qui vient se positionner en « nPage : -1 ».
Du coup, je demande dans mon script à réinsérer une fois supplémentaire le Template (qui se place en page -1) puis je la supprime et tout va bien.

Voici :

Code:
var a = 1;
var t = this.createTemplate ({nPage:0, cName: »Couv »});
var nbreCopiesV1 = app.response({
    cQuestion: « Combien souhaitez-vous générer de parties de Violon I ? »,
    cTitle: « Nombre de parties »,
    cDefault: « 8 »
    });
    while(a<=nbreCopiesV1){
        this.getTemplate(« Couv »).spawn({nPages:this.numPages});
       
        var f = this.addField(« ZoneInstru », »text »,0,[0,50,594,100]);
        f.value = « Violon I »;
        f.alignment = « center »;
        f.textSize = 40;
        f.textColor = color.black;
        f.textFont = font.Helv;
       
        var f = this.addField(« ZoneCopies », »text »,0,[525,800,585,830]);
        f.value = a + « / » + nbreCopiesV1;
        f.alignment = « right »;
        f.textSize = 20;
        f.textColor = color.black;
        f.textFont = font.Helv;
        a=a+1;
    }
    a=1;
    var nbreCopiesV2 = app.response({
        cQuestion: « Combien souhaitez-vous générer de parties de Violon II ? »,
        cTitle: « Nombre de parties »,
        cDefault: « 7 »
        });
    while(a<=nbreCopiesV2){
        this.getTemplate(« Couv »).spawn({nPage:this.numPages});
           
        var f = this.addField(« ZoneInstru », »text »,0,[0,50,594,100]);
        f.value = « Violon II »;
        f.alignment = « center »;
        f.textSize = 40;
        f.textColor = color.black;
        f.textFont = font.Helv;
           
        var f = this.addField(« ZoneCopies », »text »,0,[525,800,585,830]);
        f.value = a + « / » + nbreCopiesV2;
        f.alignment = « right »;
        f.textSize = 20;
        f.textColor = color.black;
        f.textFont = font.Helv;
   
        a=a+1;
    }
    a=1;
    var nbreCopiesAlto = app.response({
        cQuestion: « Combien souhaitez-vous générer de parties d’Alto ? »,
        cTitle: « Nombre de parties »,
        cDefault: « 6 »
        });
    while(a<=nbreCopiesAlto){
        this.getTemplate(« Couv »).spawn({nPage:this.numPages});
           
        var f = this.addField(« ZoneInstru », »text »,0,[0,50,594,100]);
        f.value = « Alto »;
        f.alignment = « center »;
        f.textSize = 40;
        f.textColor = color.black;
        f.textFont = font.Helv;
           
        var f = this.addField(« ZoneCopies », »text »,0,[525,800,585,830]);
        f.value = a + « / » + nbreCopiesAlto;
        f.alignment = « right »;
        f.textSize = 20;
        f.textColor = color.black;
        f.textFont = font.Helv;
   
        a=a+1;
    }
    a=1;
    var nbreCopiesVlc = app.response({
        cQuestion: « Combien souhaitez-vous générer de parties de Violoncelle ? »,
        cTitle: « Nombre de parties »,
        cDefault: « 5 »
        });
    while(a<=nbreCopiesVlc){
        this.getTemplate(« Couv »).spawn({nPage:this.numPages});
           
        var f = this.addField(« ZoneInstru », »text »,0,[0,50,594,100]);
        f.value = « Violoncelle »;
        f.alignment = « center »;
        f.textSize = 40;
        f.textColor = color.black;
        f.textFont = font.Helv;
           
        var f = this.addField(« ZoneCopies », »text »,0,[525,800,585,830]);
        f.value = a + « / » + nbreCopiesVlc;
        f.alignment = « right »;
        f.textSize = 20;
        f.textColor = color.black;
        f.textFont = font.Helv;
   
        a=a+1;
    }
    a=1;
    var nbreCopiesCb = app.response({
        cQuestion: « Combien souhaitez-vous générer de parties de Contrebasse ? »,
        cTitle: « Nombre de parties »,
        cDefault: « 4 »
        });
    while(a<=nbreCopiesCb){
        this.getTemplate(« Couv »).spawn({nPage:this.numPages});
           
        var f = this.addField(« ZoneInstru », »text »,0,[0,50,594,100]);
        f.value = « Contrebasse »;
        f.alignment = « center »;
        f.textSize = 40;
        f.textColor = color.black;
        f.textFont = font.Helv;
           
        var f = this.addField(« ZoneCopies », »text »,0,[525,800,585,830]);
        f.value = a + « / » + nbreCopiesCb;
        f.alignment = « right »;
        f.textSize = 20;
        f.textColor = color.black;
        f.textFont = font.Helv;
   
        a=a+1;
    }
    this.getTemplate(« Couv »).spawn({nPage:this.numPages});
    this.deletePages({nStart:0,nEnd:1});
    this.saveAs({cPath: »/C/Users/…/Desktop/CouvCordes.pdf »});

J’ai inséré ce script dans une action et j’obtiens le résultat voulu donc tout va bien.
Est-il faisable d’ajouter ce script au niveau application. Je vais avoir d’autres scripts du même type à réaliser et j’aimerais créer un menu à cet effet ?
L’action est top pour un traitement par lot. En l’occurrence, ce script sera utilisé sur un fichier à la fois… Même si ça marche parfaitement ainsi, je me dis que ça peut être mieux (et puis ça me donne l’occasion d’apprendre !). J’ai lu l’article https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/ mais je n’ai pas tout très bien compris… où insérer le fichier .js,…

En tout cas, encore merci pour votre aide et pour ce forum si précieux !

Jojoe