Donnez vie à vos documents numériques !
 

Insertion d’une page entre chaque page d’un PDF

abracadabraPDF Forums PDF – Général Insertion d’une page entre chaque page d’un PDF

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46022
    jojoe
    Membre

    Bonjour à tous,

    Je travaille sur AcrobatPro XI.
    Je cherche un moyen d’insérer une page blanche entre chacune des pages d’un document PDF.
    J’ai voulu passé par un script lancé à partir d’une action, mais je me fais des nœuds à la tête avec l’algorithme alors que ça me paraissait si simple et évident au début…

    Voici mon code en l’état actuel et je ne trouve pas mn erreur. Ici, toutes les pages sont insérées en fin de fichier.

    Code:

    //Insertion de la page blanche à la fin du fichier
    this.insertPages({nPage:this.numPages-1,cPath:”/I/COPIE/Ressources Informatiques/JavaScript/ModèlesPDF/PageBlanche.pdf”});

    //Insertion de la page blanche en tant que template
    var t = this.createTemplate ({nPage:this.numPages-1, cName:”PageBlanche”});

    //Déclaration des variables
    var nbrePages = this.numPages; //nbrePages correspond au nombre total de pages dans le document
    var decalageInsertion = 3; //decalageInsertion correspond au décalage arrière pour trouver l’endroit d’insertion de la page blanche
    var total = nbrePages * 2 + 1; //total correspond au nombre de total de pages du document une fois toutes les pages blanches insérées

    /*
    * TANT QUE le nombre de pages du document (nbrePages) est inférieur au nombre total de pages attendu (total)
    *  ALORS
    *      la variable numPage = nbrePages-decalageInsertion
    *      insère la page blanche en lieu et place
    *      incrémente le nbrePages de 1
    *      incrémente le décalage de 2
    */

    while(nbrePages    var localisationInsertion = this.numPages – decalageInsertion;

        this.getTemplate(“PageBlanche”).spawn({nPages:localisationInsertion});
        nbrePages++;
        decalageInsertion += 2;
    }

    Aussi, dans un second temps, plutôt que d’imposer le chemin vers la page blanche, peut-on proposer à l’utilisateur de choisir son fichier (dans le cas où il voudrait insérer autre chose que des pages blanches) ?

    Un grand merci aux âmes charitables qui sauront m’aider à résoudre ce problème.

    Jojoe

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

    bonjour,
    Voici deux scripts.
    Le premier insert la première page d’un fichier PageBlanche.pdf qui se trouve dans le même répertoire que le fichier à traiter.
    Les variantes sont indiquées dans le script. L’enregistrement est prévu, mais il suffit de retirer les lignes si on n’en veut pas !

    Code:
    // Insertion page #1 d’un fichier
    var Chemin = this.path;
    var nomDocument = this.documentFileName;
    var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
    for (var i=this.numPages-2; i>=0; i–) {
        // Pour une page blanche après la dernière page : var i=this.numPages-1;
        // Pour une page blanche avant la première page : i>=-1;
        this.insertPages ({
            nPage: i,
            cPath: repertoire+”PageBlanche.pdf”,
            nStart: 0
        });
    }
    // Enregitrement
    this.saveAs({
        cPath: Chemin,
        bPromptToOverwrite: false,
    });

    Ce second script insert la page active du fichier précédemment ouvert.
    Si 15 fichiers sont ouverts et que le fichier à traiter est le dixième, la page insérée sera la page active du neuvième fichier. Est-ce clair ???
    Si ça ne l’est pas, le plus simple est de n’ouvrir que les 2 fichiers nécessaires. En premier le fichier où il y a la page à insérer (afficher la page), puis le fichier à traiter avant de lancer l’action.

    Code:
    // Insertion page active du fichier ouvert
    var Chemin = this.path;
    var nomDocument = this.documentFileName;
    var d = app.activeDocs;
    for (var i=0; i     if (i!=0 && d.documentFileName==nomDocument) {
            var lautreChemin=d[i-1].path;
            var laPage=d[i-1].pageNum;
            for (var i=this.numPages-2; i>=0; i–) {
                // Pour une page blanche après la dernière page : var i=this.numPages-1;
                // Pour une page blanche avant la première page : i>=-1;
                this.insertPages ({
                    nPage: i,
                    cPath: lautreChemin,
                    nStart: laPage
                });
            }
            // Enregitrement
            this.saveAs({
                cPath: Chemin,
                bPromptToOverwrite: false,
            });
            break;
        }
    }

    @+
    :bonjour:

    #65418
    Merlin
    Maître des clés

    :bravo:

    Je me doutais que tu avais ça dans un de tes grimoires.  :Smiley03:

    #65419
    bebarth
    Maître des clés

    Je viens de m’apercevoir dans le second script qu’avec le copier/coller, il y avait 2 fois la variable “i” dans 2 boucles “for” imbriquées !!!
    Et ça fonctionne quand même…  :Euuuh:
    => En fait j’ai modifié le script juste avant de le poster. Dans la version d’origine les boucles n’étaient pas imbriquées. Dans la version avec 2 variables “i”, ça fonctionne uniquement s’il n’y a que les 2 fichiers ouverts ou si ce sont les 2 derniers.
    Je pense qu’il vaut mieux changer le nom d’une de ces variables. Ici, j’ai conservé la variable “i” identique au premier script et j’ai remplacé l’autre par “j” :

    Code:
    // Insertion page active du fichier ouvert
    var Chemin = this.path;
    var nomDocument = this.documentFileName;
    var d = app.activeDocs;
    for (var j=0; j     if (j!=0 && d[j].documentFileName==nomDocument) {
            var lautreChemin=d[j-1].path;
            var laPage=d[j-1].pageNum;
            for (var i=this.numPages-2; i>=0; i–) {
                // Pour une page blanche après la dernière page : var i=this.numPages-1;
                // Pour une page blanche avant la première page : i>=-1;
                this.insertPages ({
                    nPage: i,
                    cPath: lautreChemin,
                    nStart: laPage
                });
            }
            // Enregitrement
            this.saveAs({
                cPath: Chemin,
                bPromptToOverwrite: false,
            });
            break;
        }
    }

    @+
    :bonjour:

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