Donnez vie à vos documents numériques !
 

Bouton d’impression : séquences de pages, et aperçu de la boite de dialogue

abracadabraPDF Forums PDF – Général Bouton d’impression : séquences de pages, et aperçu de la boite de dialogue

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44802
    shauko
    Membre

    Bonjour,

    Je vais tâcher d’être clair pour mon premier topic :)

    Je précise tout d’abord que j’ai longuement cherché ma réponse, j’ai trouvé des éléments mais je pense qu’il me manque 3 fois rien pour en arriver au résultat que je souhaite.

    Alors, je suis chargé de marketing et je prépare des formulaires « déviés » en fichiers de travail pour le service commercial afin de créer des propositions commerciales (zones répétables, choix d’images, automatisation des listes déroulantes en fonction de choix, etc…. bref c’est très pratique et visuellement plus pro).

    J’utilise Adobe ACROBAT Pro, et mes collègues sont à jour avec la version de Reader XI.

    Il existe de nombreux profils dans nos propositions avec pas mal de variantes possibles, aussi j’essaie de prévoir tous les cas de figure. Ce faisant, j’ai dans mes fichiers de base (d’environ 6-7 pages) souvent 2 ou 3 pages qui ne servent pas au final.

    L’idée, c’est que ces propositions peuvent aussi bien être imprimées en papier (pour envoi courrier standard), qu’en pdf via une imprimante virtuelle pour être mailées.

    Donc, j’aimerais mettre sur la dernière page de mes fichiers des boutons d’impression paramétrés en fonction du besoin.

    Exemple : le premier bouton n’imprime que les pages 1-3-5-6-7, le 2ème les pages 1-2-3-5-7, etc … en fonction des besoins donc.

    Mais il faut que la boite de dialogue du choix de l’imprimante apparaisse pour soit imprimer papier, soit en imprimante virtuelle pdf.

    Alors j’ai trouvé différents bouts de code qui répondent presque à mes questions mais pas complètement :

    vu ici : http://abracadabrapdf.net/forum/index.php/topic,2163.msg11725.html#msg11725
    « this.print({bUI: true, nStart: 0, nEnd: 6}); —> m’ouvre bien la boite de dialogue, mais je n’ai pas trouvé comment séquencer les pages, et si je rajoute une 2ème ligne pour créer une séquence ça fonctionne pour l’impression papier (mais ça ouvre coup sur coup 2 boites de dialogue), mais pour le pdf virtuel ça crée donc 2 fichiers différents qu’il faudra alors fusionner après

    Ou sinon, j’ai trouvé également ceci dans l’exemple sur ce site avec les cases à cocher :
    vu ici : http://abracadabrapdf.net/forum/index.php/topic,1239.msg7233.html#msg7233

    « console.clear();
    Initialisation();
    console.println(« Contrôle de l’imprimante utilisée: »)
    ppp=this.getPrintParams();
    console.println(« Nom de l’imprimante effectivement utilisée: » »+ppp.printerName+ » » »);
    indexpage=0;
    while (indexpage{
    if(this.getField(« ccpage. »+indexpage).isBoxChecked(0))
    {
    pp=indexpage+1;
    console.println(« Impression de la page: »+pp);
    try
    {
    this.print(false,indexpage,indexpage);
    }
    catch(e)
    {
    app.alert(« Impression page « +pp+ » impossible. »,1);
    }
    }
    indexpage=indexpage+1;
    }

    //console.show(); »

    —> mais mon soucis ici c’est que je n’ai plus la boite d’impression qui s’ouvre, l’impression se faire par défaut sur l’imprimante papier, et j’avoue ne pas posséder les connaissances nécessaires pour savoir quoi remplacer précisément pour pointer l’imprimante virtuelle (j’ai essayé de remplacer « printerName » par « AdobePD »F mais ça ne parait pas suffisant :p)

    J’essaie de détailler au mieux pour que vous cerniez mon besoin lol, désolé du pavé.

    Donc pour résumer, soit la première solution, mais avec possibilité de séquencer les pages (pas juste start et end), soit la 2ème solution qui serait presque la meilleure pour moi (on sélectionne les pages que l’on souhaite et hop) mais avec la possibilité d’accéder à la boite de dialogue avant pour pouvoir sélectionner soit imprimante papier, soit imprimante virtuelle (ou alors remplacer le bout de code qui pointe l’imprimante par défaut pour lui dire de sélectionner celle virtuelle).

    Mais si vous pouvez répondre aux 2, ce serait magnifique car nul doute que les 2 me serviront au gré de mes créations lol.

    Grand merci pour votre aide, et un immense bravo pour ce site qui regorge d’infos très utiles.

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

    Bonjour et bienvenue,

    1.
    this.print({bUI: true, nStart: 0, nEnd: 6});
    this.print(false,0,6);

    La différence entre ces deux lignes de code c’est true et false.
    true : la boite de dialogue d’impression s’affiche.
    false : la boite de dialogue d’impression ne s’affiche pas.
    Les intitulés en bleu sont facultatifs, les accolades ne servent que s’il y a les intitulés. Si on ne met pas les intitulés il faut impérativement renseigner les 3 paramètres dans l’ordre.

    2.
    Colle ce code dans la Console (crtl-J ou cmd-J) après y avoir effacé le texte par défaut, sélectionne le, et appuie sur la touche Entrée (je dis bien Entrée (Enter) et non pas Retour (Return)).

    var l = app.printerNames.length
    for ( var i = 0; i console.println(« ( » + (i+1) + « )  » + app.printerNames);

    Ca te donnera la liste et le nom des imprimantes disponibles, et donc la syntaxe exacte du nom d’imprimante à utiliser dans le script.

    Ai-je bien tout répondu ?
    :Smiley01:

    #56812
    shauko
    Membre

    Merci de te pencher sur mon cas.

    1.
    this.print({bUI: true, nStart: 0, nEnd: 6});
    this.print(false,0,6);

    La différence entre ces deux lignes de code c’est true et false.
    true : la boite de dialogue d’impression s’affiche.
    false : la boite de dialogue d’impression ne s’affiche pas.
    Les intitulés en bleu sont facultatifs, les accolades ne servent que s’il y a les intitulés. Si on ne met pas les intitulés il faut impérativement renseigner les 3 paramètres dans l’ordre.

    Alors pour le true et false, j’avais effectivement compris que cela appelait ou non la boite dialogue (je ne savais pour les 2 modes d’écriture par contre).
    Toutefois, ce que je cherche à savoir, c’est quelle écriture il faut ajouter à cela pour « couper » la séquence, à savoir par exemple si je veux de la page « 1 à 3″, » pas la page 4″, puis « la page 5 », « pas la page 6 », et « les pages 7 et 8 ». Le tout dans une même accolade, ou dans les mêmes parenthèses. Car je me suis rendu compte qu’en le faisant en répétant la commande comme ci-dessous par exemple :

    this.print(true,0,2);
    this.print(true,4,4);
    this.print(true,6,7);

    ça aura pour effet de lancer 3 fois la boite dialogue, et si on crée un pdf via l’imprimante virtuelle, ça lance plusieurs fois la virtualisation et on se retrouve donc avec autant de pdf créés que de lignes écrites.

    2.
    Colle ce code dans la Console (crtl-J ou cmd-J) après y avoir effacé le texte par défaut, sélectionne le, et appuie sur la touche Entrée (je dis bien Entrée (Enter) et non pas Retour (Return)).

    var l = app.printerNames.length
    for ( var i = 0; i console.println(« ( » + (i+1) + « )  » + app.printerNames);

    Ca te donnera la liste et le nom des imprimantes disponibles, et donc la syntaxe exacte du nom d’imprimante à utiliser dans le script.

    Hum, j’ai testé avec tous les boutons Entrée et return lol, mais voilà pour seule réponse ce que dit la console :
    Avec Entrée : rien du tout

    Avec return :
    « ReferenceError: i is not defined
    1:Console:Exec
    undefined »
    (mais donc c’est ptet normal au vu de tes indications)

    Ai-je bien tout répondu ?
    :Smiley01:

    Pas encore complètement ^^  … mais au moins tu essaies de me venir en aide, et je t’en remercie beaucoup !
    Je coince sur ce « petit » soucis depuis plusieurs jours maintenant, et ça m’irrite d’autant plus que j’imagine la solution assez « simple » ou évidente pour qqu’un qui s’y connaîtrait mieux que moi (j’espère que cela sera le cas lol).

    #56813
    Merlin
    Maître des clés

    1.
    Il faut absolument que tu configures tes Préférences JavaScript comme sur la capture ci-jointe.
    Ensuite tu relances Acrobat et la Console fonctionnera beaucoup mieux.
    :Smiley03:

    2.
    Je viens de trouver ceci dans la doc., donc tous tes efforts seront vains…
    If nStart and nEnd parameters are used, bUI must be false.
    :mur:

    3.
    Bonne nouvelle et je m’en veux de ne pas y avoir pensé avant : pas besoin de JavaScript pour les séquences de pages, c’est prévu dans l’interface.
    Menu Fichier : Propriétés : Avancées : Etendue à imprimer.
    Que l’on note ainsi : 1-5, 8-12, 17-32
    etc.

    Capture jointe.
    :geek:

    [attachment deleted by admin]

    #56814
    shauko
    Membre

    Aie aie alors décidément, rien ne va dans mon sens … j’espère ne pas user ta patience.

    Car :

    1. malgré les réglages, j’ai toujours la même chose au niveau de la console

    2. c’est étrange car pour avoir essayé, la console s’ouvre bien en mettant true, et elle prend bien en compte l’étendue de pages définies par start et end que l’on compte imprimer (mais ça ne m’aide pas pour ma question principale qui est « comment couper une séquences pour exclure des pages ? »

    3. c’est gentil de me le dire, mais autant je suis une nouille en scripts autant ça je le savais :)  le hic pour moi c’est que je veux simplifier au max la tâche de mes collaborateurs. je leur ai expliqué comment faire avec les « – » et les « ; » mais il s’avère que chaque proposition que l’on fait est différente de l’autre, que le service commercial les enchaîne pas mal, et que ce ne sont pas des foudres de guerre en informatique donc je ne dois pas trop leur en demander (avec tout le respect que j’ai pour eux lol). Et aussi c’est pour leur faire gagner du temps, éviter les erreurs (qui arriveront souvent, et la frustration liée avec) et gymnastique intellectuelle à maintes reprises, etc …

    D’où ma volonté de leur proposer des boutons (ou une liste de pages à cocher), et que les pages déterminées par un script s’impriment au choix sur l’imprimante papier, ou sur l’imprimante virtuelle pdf ….

    J’essaie d’être clair car je sais ma question pinailleuse et se jouant à un détail près, et j’espère vraiment l’être ….. 

    #56815
    Merlin
    Maître des clés

    Si, on va dans ton sens.
    Mais je viens de comprendre qu’il me manque une info : qui décide des séquences de pages à imprimer, et à quelle étape ?

    Parce-que c’est ça qui devra décider de la meilleure méthode à utiliser.

    #56816
    shauko
    Membre

    Alors ce sont donc mes collègues qui réalisent les propos qui décideront des séquences à imprimer, en fonction des pages qui ont été utilisées ou non.

    C’est pour cela que la 2ème méthode (liste de cases à cocher) serait à mon sens la plus appropriée (ils cochent les pages à imprimer et hop). Mais il faut pour cela que je sache comment remplacer l’utilisation de l’imprimante par défaut par celle virtuelle (ou ouvrir la boite de dialogue avec la séquence prise en compte pour pouvoir choisir l’imprimante, ce serait la solution optimale).

    A défaut de pouvoir avoir une seule liste de cases cochées, et le choix de l’imprimante, j’aurai (dans mon idée donc) 2 listes en colonnes , avec 2 boutons « maitres » « impression » en haut de chaque.
    Une 1ère colonne de cases à cocher avec les pages pour l’impression papier (pour ça le script du 2ème exemple que j’ai montré dans mon 1er message fonctionne déjà parfaitement.  Et une 2ème colonne donc identique, mais avec l’imprimante virtuelle en lieu et place de celle par défaut (donc petite modification du script).
    J’ai tenté plusieurs changements mais ça ne veut pas me lancer l’imprimante virtuelle, ça me lance toujours directement l’imprimante papier.

    Cette fois-ci, je joins un schéma de ce que j’ai en tête, j’aurai du démarrer par là car un dessin vaut mieux qu’un long discours, c’est bien connu !! :)

    L’option 3 étant je pense la plus efficace, si on y arrive c’est ma tournée !! :)

    (mais je me contenterai de l’une des 3 lol)

    P.S : j’ai réussi à avoir ma liste d’imprimantes avec la manip sur la console, merci :p

    [attachment deleted by admin]

    #56817
    shauko
    Membre

    Je me permets un petit up d’appel à l’aide. Ce n’est pas malvenu j’espère ?

    Les schémas dans ma dernière réponse clarifient ma demande (du moins c’est leur but lol). Et je serais vraiment content de pouvoir trouver une solution à mon soucis  :mur:

    Merci.  :priere:

    #56818
    Merlin
    Maître des clés

    Je me permets un petit up d’appel à l’aide. Ce n’est pas malvenu j’espère ?

    Non, pas de souci. Mais moi je suis largué…
    :joker:

    #56819
    alex
    Membre

    Ci-joint une maquette à ma façon pour illustrer une réponse à l’option 1 avec présélection de l’impression sur Pc uniquement.
    Sur Pc:
    Le sélecteur capte la liste des imprimantes disponibles à l’ouverture et on peut en sélectionner une avant d’imprimer en aveugle ou non.
    Sur Mac:
    La liste se remplit aussi mais on ne peut sélectionner l’imprimante que via le menu d’impression. On ne peut donc pas imprimer en aveugle.

    Je n’ai as cherché de solution via une impression .pdf une voie à explorer sur Mac donc.

    [attachment deleted by admin]

    #56820
    Merlin
    Maître des clés

    :bravo:

    #56821
    shauko
    Membre

    Bonjour Alex, et merci beaucoup de te pencher sur mon petit challenge lol.

    Pour avoir parcouru assez longuement le forum, je sais que tu arrives souvent à sortir une formule magique de derrière les fagots !

    J’ai commencé à tester ce que tu proposes et on va dans le bon sens c’est super, cependant j’ai quelques remarques à soumettre à ta réflexion :

    – lorsque je sélectionne une imprimante, ce choix n’est pas pris en compte dans la Boite de dialogue qui s’ouvre. L’imprimante proposée reste celle utilisée en dernier, quelle soit la sélection que l’on fait donc

    – pour l’impression papier, cela fonctionne bien : j’imprime mes séquences de pages à la suite (ou une séquence/puis une page/puis une autre séquence/etc..), et je me retrouve bien in fine avec les pages que je souhaitais imprimer, mais pour ce qui est de l’impression en PDF, les séquences imposées par le script « découpent » le pdf en plusieurs fois. On se retrouve donc à la fin avec par exemple 3 pdf distincts qu’il faudrait ensuite fusionner. Ne peut-on pas via le script demander une séquence sans que cela soit interprété comme des impressions distinctes ?
    Une autre façon de poser la question : n’y a-t-il pas un autre terme (ou une autre façon de procéder) que « nStart » and « nEnd » que l’on peut utiliser, qui viendrait commander le « ; » (point-virgule) quand on demande une liste de pages à imprimer dans la boite de dialogue ?

    Merci encore en tout cas !

    #56822
    alex
    Membre

    Bonjour,
    Comme je l’ai dit plus haut, la sélection de l’imprimante ne fonctionne que sur Windows (c’est mentionné dans la doc, voir propriété printerName). Je suppose que tu es sur Mac ou Linux…
    Quant au découpage, il est imposé par l’outil print qui est mis à notre disposition !
    On peut envisager de générer automatiquement un fichier .pdf à imprimer, contenant uniquement les feuilles à imprimer mais nous devrons le faire sous Acrobat PRO ou Standard, pas avec Adobe Reader.

    #56823
    shauko
    Membre

    Je suis bien sous windows.

    Et bien que je sois moi-même sous Acrobat Pro, mais collègues n’ont que le Reader, aussi je crois bien que pour l’impression PDF en une fois c’est râpé, plus qu’à bien leur faire intégrer le maniement du « – » et « ; ».

    Merci en tout cas du temps que vous avez passé Merlin et toi sur mes questions.

    #56824
    Benj
    Membre

    Bonjour à tous,
    je commence par vous dire que votre site est extrêmement utile, on y trouve une foule d’astuces et d’échanges très interessant.
    Du coup, j’ai repéré une discussion (citée ci-joint) qui est exactement mon problème du moment !!
    Malheureusement, contrairement à d’habitude, je vois bien une demande schématisée similaire :
    https://abracadabrapdf.net/forum/index.php/topic,2372.msg12601.html#att1561

    MAIS PAS LE CODE QUI VA AVEC !!! Help !!C’est exactement mon besoin du moment, quelqu’un pour m’aider à retrouver mes petits ??Ce serait vraiment chouette.
    Un grand merci par avance pour votre aide.
    Bonne journée à tous.

    Alors ce sont donc mes collègues qui réalisent les propos qui décideront des séquences à imprimer, en fonction des pages qui ont été utilisées ou non.

    C’est pour cela que la 2ème méthode (liste de cases à cocher) serait à mon sens la plus appropriée (ils cochent les pages à imprimer et hop). Mais il faut pour cela que je sache comment remplacer l’utilisation de l’imprimante par défaut par celle virtuelle (ou ouvrir la boite de dialogue avec la séquence prise en compte pour pouvoir choisir l’imprimante, ce serait la solution optimale).

    A défaut de pouvoir avoir une seule liste de cases cochées, et le choix de l’imprimante, j’aurai (dans mon idée donc) 2 listes en colonnes , avec 2 boutons « maitres » « impression » en haut de chaque.
    Une 1ère colonne de cases à cocher avec les pages pour l’impression papier (pour ça le script du 2ème exemple que j’ai montré dans mon 1er message fonctionne déjà parfaitement.  Et une 2ème colonne donc identique, mais avec l’imprimante virtuelle en lieu et place de celle par défaut (donc petite modification du script).
    J’ai tenté plusieurs changements mais ça ne veut pas me lancer l’imprimante virtuelle, ça me lance toujours directement l’imprimante papier.

    Cette fois-ci, je joins un schéma de ce que j’ai en tête, j’aurai du démarrer par là car un dessin vaut mieux qu’un long discours, c’est bien connu !! :)

    L’option 3 étant je pense la plus efficace, si on y arrive c’est ma tournée !! :)

    (mais je me contenterai de l’une des 3 lol)

    P.S : j’ai réussi à avoir ma liste d’imprimantes avec la manip sur la console, merci :p

    #56825
    bebarth
    Maître des clés

    bonjour,
    Il y a quelques temps et pour un précédent post (https://abracadabrapdf.net/forum/index.php/topic,2801.msg15622.html#msg15622) j’avais rédigé un script dont voici le fichier.
    J’espère qu’il t’aidera, sinon dis-moi ce que tu veux exactement faire : imprimer toutes les pages paires ou impaires, ou tout imprimer…
    @+
    :bonjour:

    #56826
    Benj
    Membre

    Bonjour Bebarth,
    Pour commencer, un grand merci d’avoir pris le temps de jeter un œil à ma demande.
    Je viens de télécharger ton fichier,le temps de le scruter pour voir si je trouve mon bonheur dans ton script.
    Mais cela semble correspondre, en partie du moins, à ce que je recherche. Ton fichier m’a même donné une idée de fonctionnalité différente
    en faisant urécap des fichiers imprimable en fin de doc, permettant via ton script de printer un ensemble de pages souhhaitées dans le doc consulté.
    Pour mon cas initial :• 1 doc complet PDF de 300 pages• ce doc embarque des pages courantes ainsi que des fiches numérotées de 1 à 256• chaque fiche proposerait un bouton en bas de page qui permettrait d’imprimer uniquement cette fichedonc disons une fiche > folio 257-258 = bouton imprimer en bas de page
    Je me replonge dans ton pdf proposé en attendant.
    Merci encore.
    Bien cordialement,Benj.

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