Donnez vie à vos documents numériques !
 

Imprimer seulement les pages sélectionnées

abracadabraPDF Forums PDF – Général Imprimer seulement les pages sélectionnées

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44805
    romain05
    Membre

    Bonjour à tous.

    Je reviens vers vous car je reste bloqué sur l’impression automatique des pages qui sont sélectionnées.
    Après avoir longtemps parcouru le forum, je suis tombé sur plusieurs solutions, mais je n’arrive pas à les mettre en application.

    Pour vous expliquer, le but est que l’utilisateur du PDF choisisse les différentes pièces dont il a besoin pour faire l’état des lieux. Dans le fichier ci-joint, nous avons toujours besoin de la première page et des deux dernières pages. Les autres sont optionnelles c’est à dire que s’il a besoin de la page Entrée, Salon, Séjour il a juste à cliquer pour qu’elles s’affichent.

    J’ai nommé chacune de ces cases comme dans les réponses données sur le forum à savoir:  ccpage.1 – ccpage.2 ect …

    J’ai appliqué ce code c, mais rien ne se passe quand je clique sur le bouton à imprimer:

    Code:
    console.clear();
    Initialisation();
    console.println(« Contrôle de l’imprimante utilisée: »)
    var ppp=this.getPrintParams();
    console.println(« Nom de l’imprimante effectivement utilisée: » »+ppp.printerName+ » » »);
    nbrePagesImprimees=0;
    indexcase=0;
    pp=0
    while (indexcase{
    if(this.getField(« ccpage. »+indexcase).isBoxChecked(0))
    {
    nbreEx=this.getField(« NbrePages. »+indexcase).value;
    debutPage=this.getField(« debut. »+indexcase).value;
    debutImpr=debutPage-1;
    finPage=this.getField(« fin. »+indexcase).value;
    finImpr=finPage-1;
      if(nbreEx>0)
      {
      pp=indexcase+1;
      ex=0;
      console.println(« Impression page(s) « +debutPage+ » à « +finPage);
          while(ex      {
            try
            {
            this.print(false,debutImpr,finImpr);
            ex=ex+1;
            nbrePagesImprimees=nbrePagesImprimees+finImpr-debutImpr+1;
            console.println(« Exemplaire numéro « +ex+ « / »+nbreEx)
            }
            catch(e)
            {
            ex=nbreEx;
            app.alert(« Impression page(s) « +debutPage+ » à « +finPage+ » impossible. »,1);
            }
          }
      }
      }
    indexcase=indexcase+1;
    }
    app.alert(nbrePagesImprimees+ » pages imprimées au total. »,3);
    //console.show();

    Donc pour vous résumer mon objectif:

    – Pouvoir imprimer seulement les pages cochées et toujours imprimer la première et les deux dernières pages.
    – Idéalement, en fonction du nombre de locataires, créer un compteur qui va me permettre de dire au moment de l’impression combien je veux d’exemplaires.

    Je ne pense pas être loin au niveau du code, mais je pense être passé à côté de quelque chose. Après avoir cherché des heures si quelqu’un peut m’aider ce n’est pas de refus.

    Merci d’avance.

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

    Bonjour.

    C’est faisable comme tu le voudrais mais pour moi cette méthode à plusieurs défauts majeurs :
    – inutilement compliquée,
    – on masque des pages existantes qui deviennent « blanches », ce qui n’est pas très user-friendly,
    – l’impression programmatique de séquences de pages discontinues doit nécessairement se faire en plusieurs fois et requiert d’afficher plusieurs fois de suite la boite de dialogue d’impression à l’utilisateur.
    Ce qui n’est pas très user-friendly non plus.

    Donc, plutôt que d’afficher d’entrée toutes les pages, masquer celles qui ne sont pas utilisées et calculer lesquelles doivent être imprimées je propose l’inverse.

    C’est-à-dire l’utilisation de « pages-modèles » masquées qui apparaissent à la demande en fonction des choix utilisateurs.
    Ce qui supprimerait la gestion des masques et la gestion des pages à imprimer puisqu’on imprimerait toutes les pages dans tous les cas.
    Voir ce magnifique tuto : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/dupliquer-dynamiquement-des-pages-dans-un-pdf/

    Mais… Si ça fonctionne avec toutes les versions d’Acrobat Pro et d’Acrobat Standard ça ne fonctionne qu’avec les deux dernières versions d’Acrobat Reader : 11 et DC.

    #56841
    romain05
    Membre

    Merci beaucoup Merlin, j’ai suivi le tuto ça marche très bien ! Et en plus la solution est simple.

    J’ai encore deux questions:

    – Comment puis-je faire pour que les deux dernières pages soient toujours à la fin du document ?
    – Comment puis-je faire pour que quand la case est cochée cela affiche la page voulue et que quand elle se décoche ça puisse masquer la page ? ( exemple l’utilisateur coche la page et se trompe et veux l’enlever)

    Avez-vous une solution ?
    Merci

    #56842
    Merlin
    Maître des clés

    Puisque tu sembles « avoir le niveau » je vais t’aiguiller directement vers la « bible », c’est-à-dire le fichier « AcrobatDC_js_developer_guide.pdf » dont le lien est donné à la fin de cet article : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/ressources-pdf-javascript/

    La réponse à tes deux questions est dedans, c’est assez simple mais il y a un truc à savoir : à chaque sélection de l’utilisateur il vaut mieux tout effacer et générer un nouvel ensemble de nouvelles pages plutôt que d’essayer d’en intercaler une nouvelle parmi les existantes.
    Sinon on a vite fait de se larguer, même avec 5 pages ça devient très vite un vrai casse-tête.
    :Smiley15:

    #56843
    romain05
    Membre

    Merci pour ton lien, Je vais regarder tout ça, merci !

    Pour la première question, j’y suis arrivé, en mettant 1 à la place de « this.numPages »
    Pour la seconde, j’ai fait plus simple en créant juste des boutons.

    « Mais… Si ça fonctionne avec toutes les versions d’Acrobat Pro et d’Acrobat Standard ça ne fonctionne qu’avec les deux dernières versions d’Acrobat Reader : 11 et DC. »
    Le but est de pouvoir l’utiliser sur IPAD, mais j’ai l’impression que ça ne fonctionne pas sur acrobat Reader  :Euuuh:

    #56844
    Merlin
    Maître des clés

    Si ça doit fonctionner sur iPad je crois que tu peux oublier les deux méthodes, aucune ne fonctionnera.
    Avec Android non plus, il faut une tablette avec Windows..

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