Donnez vie à vos documents numériques !
 

Dupliquer une page grâce à une liste déroulante

abracadabraPDF Forums PDF – Général Dupliquer une page grâce à une liste déroulante

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44925
    psykolivier
    Membre

    Hello,

    Une nouvelle question, car là je n’ai trouvé aucune info :/
    Autant dupliquer des valeurs de champs, ca semble easy. Mais là j’aimerai pouvoir dupliquer des pages PDF.

    Explication, sur ma page 1, grâce à une liste déroulante je peux choisir 1, 2, 3 ou 4.
    Et donc en fonction, cela me duplique la page 2 en x1, x2, x3 ou x4.

    Merci pour votre aide !

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

    Bonjour,

    La duplication de page ne peut fonctionner qu’avec Acrobat, pas avec Adobe Reader.
    On continue ?
    :idee:

    #57503
    psykolivier
    Membre

    La conception du formulaire est faites avec Acrobat Pro oui.

    Mais la consultation sera faire avec Acrobat Reader dans la très grande majorité des cas je pense.
    C’est là que ça coince ?

    #57504
    Merlin
    Maître des clés

    C’est là que ça coince ?

    Exactement.
    Il va falloir trouver une autre méthode ou une autre solution…
    :joker:

    #57505
    psykolivier
    Membre

    Arf OK.
    Bon d’un côté ca me rassure, j’ai tellement trifouillé du script sans réussir :)

    J’ai cru comprendre qu’il était possible de « cacher » des pages.
    Autrement-dit, il serait possible d’avoir la même page 4 fois, toute cacher.
    Et grâce au choix du menu déroulant, les rendre visibles… je vais testouillé vers cette piste.

    #57506
    psykolivier
    Membre

    J’avance dans ma recherche…

    A priori, il faut pouvoir nommer les pages pour pouvoir les identifier en template (un simple « Page 2 » ne semble pas convenir).
    Et ensuite, utiliser « spawn » pour dupliquer la page.

    Par exemple :
    var MyTemplate;
    MyTemplate = this.getTemplate(« AssoAdhesion »);
    MyTemplate.spawn (this.pageNums);

    Seulement, je n’ai pas encore trouvé où nommer mes pages-templates. Je n’ai pas cette option dans mes outils.

    Et je ne comprends pas trop l’intérêt de « pageNums » :/

    #57507
    psykolivier
    Membre

    Seulement, je n’ai pas encore trouvé où nommer mes pages-templates. Je n’ai pas cette option dans mes outils.

    Pour ce point c’est trouvé !
    Bien caché :)

    Dans le tout petit icône « Afficher ou masquer les panneaux ».
    Et activer « Traitement du document »

    J’avais jamais autant trifouiller dans Acrobat :)

    Bon reste à faire la suite…

    #57508
    psykolivier
    Membre

    Ca avance, ca avance…

    Voici mon état d’avancement.

    – Ma PAGE 1 présente une formulaire qui permet entre autre de choisir le nombre d’adhérents (jusqu’à 6) – régler à 0 à l’ouverture.
    – Ma PAGE 2 est nommée en template ADHERENT
    – Ma PAGE 2 est cachée, pour ne pas être visible à l’ouverture

    – Sur ma PAGE 1, je valide mon formulaire par un bouton et une action javascript.
    Avec notamment cette partie, pour afficher/créer autant de fiche adhérent que nécessaire :

    Code:
    //ADHERENTS
    var NewPage = getTemplate(« ADHERENT »);
    var TotalAdherents = this.getField(« NOMBRE_ADHERENTS »).value;

    if (TotalAdherents >= 0) {
    for (var i =0; i NewPage.spawn(numPages,true,false);
    }
    }

    De base, ca fonctionne.
    Mais 2 points me posent encore un petit soucis.

    1 : les pages ajoutées s’ajoutent à la fin de mon PDF.
    Or, cela doit s’ajouter après la page 1.
    J’imagine que cela se joue avec « numPages », mais je ne pige pas très bien le principe avec true, false :/

    2 : Si au départ, j’ai choisir 2 adhérents, cela m’ajoute 2 fiches : OK
    Mais si finalement je veux mettre 3, cela m’ajoute +3 fiches.
    Je m’en retrouve donc avec 5 !
    Arf… je ne trouve pas comment détecter le nombre de fiche déjà « spawner » pour ne créer que les supplémentaires, et par reprendre à 0.

    Et effet inverse.
    Si j’avais choisi 3, cela me créé 3 fiches.
    Mais si je change à 2, cela me rajoute 2 fiches.
    Donc au total 5 fiches.
    Alors que l’idéal serait de détecter le nombre déjà de fiches déjà « spawner » pour supprimer celle(s) en trop.

    Bref… dans les 2 cas, c’est une détection de nombre total de fiche déjà présentes.

    #57509
    psykolivier
    Membre

    Pour l’ordre de « spawn » des pages, j’ai fais un truc pas très propre… mais qui fonctionne.

    Code:
    //ADHERENTS
    var NewPage = getTemplate(« ADHERENT »);
    var TotalAdherents = this.getField(« NOMBRE_ADHERENTS »).value;

    var j = pageNum;

    if (TotalAdherents >= 0) {
      for (var i =0; i       NewPage.spawn({nPage: j + 1, bRename: false, bOverlay: false});
          j = j+1;
      }
    }

    Me reste mon soucis de pages en trop :/

    #57510
    Merlin
    Maître des clés

    Scuse, j’ai répondu par habitude.

    Mais effectivement dans Adobe Reader XI (et certainement aussi dans les versions à venir) ça fonctionne très bien, sous réserve d’enregistrer la page à dupliquer comme « modèle ».
    Je prépare un article sur le sujet (après les vacances…), en attendant il y a un exemple à télécharger ici : http://abracadabrapdf.net/file/ReaderXI_trombinoscope_demo.pdf

    :Smiley01:

    #57511
    psykolivier
    Membre

    Hello,

    Je viens de tester ton fichier d’exemple, avec la duplication de template (modèle).
    Cette partie là c’était OK.
    Mais comment faire pour savoir combien de duplication ont été créé au total ?

    un truc du genre  : template(« MonModele »).count  :idee:

    /// EDIT ///

    Ceci étant, le sujet initial de la duplication est réglé :)

    Mon code un peu tordu :

    Code:
    //ADHERENTS
    var NewPageA = getTemplate(« ADHERENT »);
    var NewPageB = getTemplate(« ADHERENT_COMPLETEMENT »);
    var TotalAdherents = this.getField(« NOMBRE_ADHERENTS »).value;

    var j = pageNum;

    if (TotalAdherents > 0) { 
      for (var i =0; i       NewPageA.spawn({nPage: j + 1, bRename: false, bOverlay: false});
          NewPageB.spawn({nPage: j + 2, bRename: false, bOverlay: false});
          j = j+2; 
      }
    }

    Je me permets d’ouvrir un autre sujet pour la suite de mon questionnement :)

    #57512
    Merlin
    Maître des clés

    Mais comment faire pour savoir combien de duplication ont été créé au total ?

    Il faut les compter et les additionner en utilisant JavaScript, en espérant avoir prévu tous les cas de figure…
    Une bonne galère en perspective.
    :tutut:

    #57513
    psykolivier
    Membre

    Une bonne galère en perspective.

    LoL ok :)

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