Page dédiée à l'impression avec cases à cocher. RÉSOLU  (Lu 10741 fois) Partager ce sujet Imprimer

1 B


bruninho  11 juin 2010 : 15:56

Bonjour,

Je voudrais en fait avoir une page avec une liste de toutes mes pages répertoriées dans mon formulaire.
Et je veux mettre une case à cocher pour chaque page (ligne de texte)

Je coche les cases des pages que je souhaite imprimer.
Et j'ajoute un bouton IMPRIMER qui m'imprime la sélection (les pages dont la case est cochée)


Est-ce possible ?

D'avance merci pour votre aide.

IP archivée


alex  13 juin 2010 : 15:56

Oui, à priori,c'est possible et pas vraiment compliqué.
Si la liste des pages doit se faire de manière automatique à partir d'un élément des pages à répertorier, il faut le préciser (par exemple à partir d'un champ de titre).
On voit ça demain...

IP archivée


alex  14 juin 2010 : 08:53

La page jointe propose un exemple de sélection multiple de pages à imprimer.
Les cases à cocher sont obtenues par duplication du champ "ccpage" sous Acrobat (ici ccpage.0 à ccpage.13)
Une case à cocher "ccpageT" lance un script de sélection ou désélection de toutesl les cases à cocher.
Le bouton "Imprimer" lance le script d'impression ici en mode silencieux page par page. Illustration de try/catch pour inhiber les messages d'erreur obtenus si les pages à imprimer sont manquantes.
L'avatar (ours Ponpon) cache un bouton qui lance un script qui écrit et indexe les textes des ToolTips des cases à cocher.
Un script de document nommé "Initialisation()" précise le nombre de cases (ici 14 cases notées de 0 à 13).

IP archivée


bruninho  17 juin 2010 : 16:41

Super... C'est exactement ce que je voulais.
Merci.
Je teste ça sur mon formulaire de suite.

Merci encore

IP archivée


bruninho  18 juin 2010 : 16:58

Une dernière question... Est-il possible que la page 8 (par ex) puisse être imprimée 3 fois ?

Merci d'avance de votre réponse

IP archivée


alex  18 juin 2010 : 17:47

Oui, dans ce cas il faudrait prévoir pour chaque case à cocher, un petit menu déroulant qui permettrait de fixer le nombre de copies de la page considérée. Ce menu déroulant serait par défaut sur la valeur 0 (cases non cochées) ou 1 (cases cochées).
Autre manière de faire, on pourrait ne travailler qu'avec une série de listes déroulantes, avec une commande case à cocher unique "Tout imprimer" passant les valeurs par défaut à 1 (cochée) ou 0 (non cochée).
Evidemment, il faudrait réécrire le script d'impression en fonction de l'option choisie...
Bon week-end.

IP archivée


alex  21 juin 2010 : 12:40

Voici la solution à base de menus déroulants:
La page jointe propose un exemple de sélection multiple de pages à imprimer.
Les menus déroulants sont obtenue par duplication du champ "NbrePages" sous Acrobat (ici NbrePagese.0 à NbrePages.13)
Une case à cocher "ccpageT" lance un script qui passe tous mes menus déroulants à zéro ou à la valeur courante issue du sélecteur "NbrePagesDefaut".
Le bouton "Imprimer" lance le script d'impression ici en mode silencieux page par page. Illustration de try/catch pour inhiber les messages d'erreur obtenus si les pages à imprimer sont manquantes.
L'avatar (ours Ponpon) cache un bouton qui lance un script qui écrit et indexe les textes des ToolTips des menus déroulants.
Un script de document nommé "Initialisation()" précise le nombre de pages (ici 14 pages notées de 0 à 13).

IP archivée


Merlin  21 juin 2010 : 19:01

Trop fort le nounours !
 :bravo:

IP archivée


bruninho  24 juin 2010 : 13:20

Merci pour l'exemple.

En fait, j'aurai voulu que toutes les pages sauf une soient avec une case à cocher pour une impression en 1 exemplaire.
Et la case restante à imprimer en 3 exemplaires (sous forme de liste ou case à cocher mais paramétrer pour 3 copies de cette pages.

En résumé, j'ai 21 pages.
Seul la page 10 doit être imprimée en 3 exemplaires.
Les autres en 1 exemplaires.

Mais il faut que je puisse toujours avoir le choix d'imprimer qu'une sélection de ces pages.


J'ai donc essayé un mix de vos 2 exemples. Mais pas facile... :Euuuh:

IP archivée


alex  24 juin 2010 : 18:44

Effectivement, difficile de faire un mixte, mais en partant de la première méthode, ça doit être jouable. Faites-moi signe si ça vous paraît inextricable.

IP archivée


bruninho  25 juin 2010 : 09:37

J'ai fait pas mal d'essais mais mes connaissances sont limitées.
Aussi je vous fais un petit signe... si vous pouviez m'aider.

merci d'avance

IP archivée


alex  25 juin 2010 : 21:44

Voilà la solution personnalisée de bruninho...

Pour ceux qui veulent tester en ne conservant que la page de garde sans lancer l'impression, passer les lignes 17 et 32 du script d'impression en commentaires:
this.print(false,indexpage,indexpage);
devient
//this.print(false,indexpage,indexpage);
puis ouvrir la console (Pomme-J pour les Mac, Ctrl pour les Pc)

Cette manipulation est valable pour les deux autres exemples précédants.

Nota:seules les solutions 1 et 2 sont génériques. La 3 répond au problème particulier de bruninho qui pourra aussi fixer la valeur du nombre d'exemplaires par défaut à 3 dans le script de la case à cocher "ccpage.9"
this.getField("NbrePages.9").currentValueIndices=[3];


IP archivée


bruninho  28 juin 2010 : 17:06

Un énorme MERCIIIII !!!  :bravo:

Je m'empresse de le tester...
Merci encore pour toute ton aide et pour la réactivité...

IP archivée


bruninho  14 décembre 2011 : 17:32

Bonjour,

A l'exemple 3, je souhaite ajouter une 2ème case à cocher liée à une liste déroulante (nombre d'impressions souhaitées).
Il me reste qu'à changer le code du bouton IMPRIMER.

Or, après un paquet d'essais, je n'arrive jamais à ce que ces 2 cases n'impriment que la quantité choisie dans la liste.

Je joins le code de mon bouton IMPRIMER.
Quel code dois-je ajouter pour commander l'impression de la page 21 par ex (en plus de la page 13 dans mon ex ci-joint) ?

Merci d'avance de votre aide

IP archivée


Sky  10 juillet 2020 : 17:30

Allo,
est-ce possible d'avoir le même résultat mais avec la fonction enregistré sous à la place de imprimer et si oui comment SVP ?!
 :soleil:
 

IP archivée


bebarth  11 juillet 2020 : 09:12

bonjour,
est-ce possible d'avoir le même résultat mais avec la fonction enregistré sous à la place de imprimer...
Sur une conversation qui date d'une dizaine d'année, il serait bon de reformuler exactement ta demande, sans que l'on ait à tout relire depuis le début !
Seul Merlin peut se souvenir car il me semble qu'Alex (qui fût l'une de mes références en JavaScript) ne participe plus au forum depuis un certain temps, et il y a 10 ans je ne faisais que poser des questions...
@+
 :bonjour:

IP archivée


Merlin  11 juillet 2020 : 11:50

Alex profite de sa retraite bien méritée depuis quelques temps déjà.  :Smiley03:

La réponse est oui et ça devrait être assez simple puisqu'a priori il suffit de remplacer la fonction "print" par la fonction "saveAs".

IP archivée


Sky  13 juillet 2020 : 15:00

Allo ! J'avoue ne pas avoir portée attention à la date du post.

Présentement le script permet d'imprimer seulement les pages cochées.
Nous voudrions le modifier pour que ce soit la fenêtre saveAs plutôt que la fenêtre d'impression.
Résultat désiré:  Enregistrer sous seulement les cases des pages cochées désirées. Éventuellement chaque case à cocher sera au bout d'un élément d'une table des matières

voici le code qui a été fourni il y a 10 ans, je pense qu'il y a plus qu'une information à changer comme il y a plusieurs références à l'impression mais je n'y arrive pas:

console.clear();
Initialisation();
console.println("Contrôle de l\'imprimante utilisée:")
ppp=this.getPrintParams();
console.println("Nuance PDF");
indexpage=0;
while (indexpage<NbreCC)
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();



Pouvez-vous m'aider S.V.P. ?


IP archivée


Merlin  13 juillet 2020 : 15:59

1. Fais attention que la deuxième ligne "Initialisation();" fait appel à une fonction enregistrée en script de document.

2. C'est cette ligne qu'il faut remplacer :
this.print(false,indexpage,indexpage);

Mais contrairement à print la fonction saveAs ne permet pas de passer les pages en paramètre. Donc il faut d'abord extraire les pages cochées dans un nouveau document avant de pouvoir l'enregistrer sous.

Sur le principe c'est simple mais ça demande un peu de temps, je ne vais pouvoir t'aider plus tout de suite.
(je respecte scrupuleusement les jours de congé et les ponts républicains)  :Smiley15:


Tu auras besoin des fonctions :
- extractPages : https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/Doc_methods.htm?rhhlterm=extractPages&rhsyns=%20#XREF_60156_extractPages
- saveAs : https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/Acro12_MasterBook/JS_API_AcroJS/Doc_methods.htm?rhhlterm=saveAs&rhsyns=%20#XREF_34461_saveAs

IP archivée


bebarth  13 juillet 2020 : 18:26

bonjour,
je respecte scrupuleusement les jours de congé et les ponts républicains  :Smiley15:
N'ayant personnellement plus de ponts, je ne respecte plus que les jours fériés républicains !!!  :geek:

Le script devrait être quelque chose comme :for (var i=13; i>0; i--) {
    if (this.getField("ccpage."+i).value=="Off") this.deletePages({nStart: i});
}
this.saveAs({cPath: this.path.substring(0,this.path.length-4)+" (fichier partiel).pdf"});
Mais effectivement il ne peut être exécuté à partir d'un bouton. Soit une action ou un script de document !
De plus, si tu lances le script à partir d'un bouton, i doit être strictement supérieur à 0 car on ne peut pas supprimer la page à partir de laquelle le script est lancé.
@+
 :bonjour:

IP archivée


Sky  13 juillet 2020 : 21:22

Premièrement merci beaucoup pour vos réponses.
Comment ça des congés on a pas ça ici dans mon coin de pays ?!  :joker:




J'aurais besoin d'un peu plus de détails, j'ai testé plusieurs choses mais je n'arrive pas à solutionner mon problème.  :mur:


Je ne suis pas certaine de à quel endroit remplacer la ligne par le nouveau code.


Je doit modifier le javascript du document ou celui du bouton ? Je débute et ça ne m'appairait pas simple.


Est-ce possible de m'indiquer à quel endroit dans le PDF je dois changer le code.

IP archivée


bebarth  13 juillet 2020 : 23:48

2 solutions :
Soit tu lances l'action Save_Sky.sequ ou tu places le fichier Save_Sky.txt dans le répertoire JavaScript d'Acrobat après l'avoir renommé Save_Sky.js. Dans ce cas tu peux utiliser le bouton.
@+
 :bonjour:

IP archivée


Merlin  14 juillet 2020 : 14:40

Citer
Comment ça des congés on a pas ça ici dans mon coin de pays ?
https://fr.wikipedia.org/wiki/F%C3%AAte_nationale_fran%C3%A7aise
 :Smiley01:

IP archivée


Sky  14 juillet 2020 : 14:54

2 solutions :
Soit tu lances l'action Save_Sky.sequ ou tu places le fichier Save_Sky.txt dans le répertoire JavaScript d'Acrobat après l'avoir renommé Save_Sky.js. Dans ce cas tu peux utiliser le bouton.
@+
 :bonjour:




 :Euuuh: :doute:  haha je n'y comprend rien jamais toucher à ce genre d'options  :Ooops: . Mais bonne fête nationale  :extra: !! Je vais continuer mes recherches.

IP archivée


bebarth  16 juillet 2020 : 07:54

bonjour,
je n'y comprend rien jamais toucher à ce genre d'options.
Je vais continuer mes recherches.
Regarde ce tuto :
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/les-differents-niveaux-dutilisation-des-scripts-javascript/
avec cet utilitaire :
https://www.abracadabrapdf.net/utilitaires/utilitaires-pdf/show_me_the_path/
Avec ça, tu devrais t'en sortir ! Demande si tu as besoin d'explications.
@+
 :bonjour:

IP archivée