Donnez vie à vos documents numériques !
 

javascript: intégration de pages à partir de bookmarks

abracadabraPDF Forums PDF – Général javascript: intégration de pages à partir de bookmarks

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43536
    bichonjp
    Invité

    Bonjour,

    Nous avons un document PDF de x pages (chaque page est associée à un bookmark).

    Nous avons également un autre fichier plus petit contenant dont toutes les pages corresponde a des bookmarks existant dans l’autre document et nous aimerions par unr procédure javascript ou autre intégrer toutes les pages de ce pdf dans le premier (ces nouvelles pages viendraient écraser les anciennes).

    Merci d’avance :-)

9 réponses de 1 à 9 (sur un total de 9)
  • Auteur
    Réponses
  • #49091
    Merlin
    Maître des clés

    J’ai peur de n’avoir pas bien compris la question mais « Remplacer les pages » conserve les signets existants dans le fichier qui accueille les nouvelles pages.

    :-|

    #49092
    bichonjp
    Invité

    OUI,

    en gros: On a un gros fichier qui doit acceuillir des pages d’un petit fichier (ces pages du petit doivent remplacer les existantes dans le gros).

    Les signets sont là juste pour identifier les pages (histoire de marquer les pages à remplacer).

    Voila j’espère que c’est plus clair.

    Merci 😮

    #49093
    Merlin
    Maître des clés

    Même réponse : Remplacer les pages.

    😎

    #49094
    bichonjp
    Invité

    ok merci,

    je reformule d’une manière plus simpliste (j’espere 😆 ) .

    Je veux que toutes les pages de mon petit document soit intégrer automatiquement dans le gros. Nous ne connaissant pas les numeros de pages à remplacer mais celles-ci sont identifiées par des signets.

    Comment dire donc à Acrobat que à chaque fois qu’il détecte un signet dans le petit document correspondant à un nombre de pages, il intègre ce groupe de pages à la place du signet correspondant dans le gros document.

    La fonction « remplacer des pages » demande des sélection de pages à enlever et a integrer.

    Merci

    #49095
    alex
    Invité

    un JavaScript (ou un batch avec JS) fera cela si l’on définit les règles du jeu…

    Par exemple si l’on convient que le nom du signet de la page à remplacer porte le nom du petit document on a déjà une bonne base de départ et l’opération peut être entièrement automatique. Contrainte: les petits documents sont dans un répertoire unique.

    Sinon,

    Solution 1-le script va parcourir les signets, et pour chacun d’eux, ouvrir une fenêtre demandant de sélectionner le petit document à insérer. Après validation le script fera le travail d’insertion avant de passer au signet suivant. Contrainte: pas mal de manipulations pour la sélection des documents.

    Solution 2-le script va parcourir les signets et établir une liste de ceux-ci. L’utilisateur coche les signets auxquels on associe un fichier et sélectionne chacun des petit documents à associer dans une seconde liste. cette correspondance étant établie, le script intègre les petits documents et génère un diagnostique des echecs éventuels. Contrainte: les petits documents sont dans un répertoire unique.

    En général, ici comme ailleurs, quand on pose bien la problèmatique, on a déjà la plus de la moitié de la solution.

    :-|

    #49096
    bichonjp
    Invité

    Bonjour,

    Par exemple si l’on convient que le nom du signet de la page à remplacer porte le nom du petit document on a déjà une bonne base de départ et l’opération peut être entièrement automatique. Contrainte: les petits documents sont dans un répertoire unique.

    C’est le cas.

    Solution 2-le script va parcourir les signets et établir une liste de ceux-ci. L’utilisateur coche les signets auxquels on associe un fichier et sélectionne chacun des petit documents à associer dans une seconde liste. cette correspondance étant établie, le script intègre les petits documents et génère un diagnostique des echecs éventuels. Contrainte: les petits documents sont dans un répertoire unique.

    Cette solution parait convenir peut-on avoir une ébauche de script afin de verifier si la correspondance marche.

    Merci d’avance

    #49097
    alex
    Invité

    Je vous soumets la première partie de la solution 2: le script ci-dessous va créer une liste sur la page courante et y collecter tous les signets avec leur nom et le numéro de la page associée (de 0 à n) en valeur d’exportation.

    Placer ce script au niveau document.On peut le lancer à partir d’un bouton intégré au document ou ajouter une commande dans les menus d’Acrobat.

    function signets()

    {

    function DBK(bkm,nLevel)

    {

    for(i=0;i

    Ce premier script intéressera un certain nombre d’entre vous…

    Dans la seconde partie, nous allons, à partir de cette liste rechercher les documents à insérer et les placer à la page correspondante. Mais vous devrez attendre mardi.

    :-|

    #49098
    bichonjp
    Invité

    Peut on avoir la 2ème partie svp, cela semble très très bien… ;-)

    Merci

    #49099
    alex
    Invité

    Ce script, intégré à un fichier baptisé Insertion.js placé dans le répertoire Javascripts d’Adobe va ajouter des fonctionnalités à Acrobat:

    Un item apparaît dans le menu « Outils » pour lancer la fonction.

    Le script va lire le nom du document à insérer et la page de destination dans la liste élaborée précédemment et propose l’insertion. Après insertion la liste est remise à jour.

    Il faudrait maintenant tester et rendre fiable ce script pour qu’il soit utilisable sur une série de signets et non plus sur un seul. C’est un travail conséquent que je ne peux vous proposer aujourd’hui car je suis pas mal sollicité. Je reviens d’ici une dizaine de jours avec une solution plus pédagogique…(vacances !)

    function insertDoc()

    {

    //Tester la version du Viewer, le script étant écrit pour des versions ultérieures à 5

    if(app.viewerVersion>5)

    {

    //Noter le chemin du répertoire de travail

    repertoirebase=this.path.substring(0,(this.path.length-this.documentFileName.length));

    console.println(« Répertoire de base: »+repertoirebase);

    //Noter l’indice de la sélection

    indice=this.getField(« Liste »).currentValueIndices;

    //Noter la page du signet où insérer le document

    pageinsert=this.getField(« Liste »).getItemAt(indice,true)-1;

    console.println(« Page où on devra insérer le document= »+pageinsert);

    //Elaborer le chemin du document à insérer

    pdfdoc=repertoirebase+this.getField(« Liste »).getItemAt(indice,false)+ ».pdf »;

    console.println(« Chemin complet du document à insérer= »+pdfdoc);

    reponse=app.alert( {

    cTitle: « Ajout d’un document »,

    cMsg: « Insérer le document «  »+this.getField(« Liste »).getItemAt(indice,false)+ ».pdf  » à la page « +pageinsert,

    nIcon:1,

    nType:2});

    if(reponse==4)

    {

    //Insérer le document à la page

    this.insertPages(pageinsert,pdfdoc);

    //Se placer au droit de la page insérée.

    this.pageNum=pageinsert;

    //Remettre la liste des signets à jour !

    signets();

    }

    }

    }

    console.println(« Fonction insertDoc() active »)

    app.addMenuItem({

    cName: « Insérer un document listé »,

    cParent: « Tools »,

    cExec: »insertDoc(); »,

    nPos: -1})

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