DIALOG CONFIGURATION IMPRESSION A4

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 2 août 2004 à 12:00
alex198710 Messages postés 6 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 3 août 2009 - 3 août 2009 à 09:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22959-dialog-configuration-impression-a4

alex198710 Messages postés 6 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 3 août 2009
3 août 2009 à 09:48
Bah écoute je suis passé d'une application C# à une application java et je suis bien content parce qu'en C# il fallait faire une image du panel avant de l'imprimer. Là en java, c'est de l'impression vectorielle donc top qualité !! Encore une fois, victoire du Java :p
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
2 août 2009 à 23:45
si PrinterJob est devenu utilisable, oui, c'est 100x plus simple :)

J'ai comme un doute sur pourquoi j'avais fait ce programme, en voyant que pageDialog et printDialog existent depuis Java 1.4 :)
Je sais en tout cas qu'il me faisait des impressions dégueulasses et qu'il déconnait complètement pour les résolutions d'impressions alors que ça passait sans problème avec PrintJob...
alex198710 Messages postés 6 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 3 août 2009
2 août 2009 à 23:03
Ah oui j'oubliais, la méthode ptCm:

public double ptCm(double cm) {
return (cm/2.54*72);
}

++
alex198710 Messages postés 6 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 3 août 2009
2 août 2009 à 23:01
Merci mais en testant par moi même car je ne trouvais rien, j'ai finalement réussi à faire quelque chose :

" PageFormat documentPageFormat = new PageFormat();

documentPageFormat.setOrientation(PageFormat.LANDSCAPE);

Paper a3 = new Paper();
double widthA3 = ptCm(29.7);
double heightA3 = ptCm(42);
a3.setSize(widthA3, heightA3);

// On définit les marges
double leftMargin = ptCm(1.5);
double rightMargin = ptCm(1.5);
double topMargin = ptCm(1.5);
double bottomMargin = ptCm(1.5);

a3.setImageableArea(leftMargin, topMargin,
(widthA3 - leftMargin - rightMargin),
(heightA3 - topMargin - bottomMargin));

documentPageFormat.setPaper(a3);

PrinterJob printJob = PrinterJob.getPrinterJob();
documentPageFormat = printJob.pageDialog(documentPageFormat);

Book book = new Book();
book.append(<VOTRE PANEL A IMPRIMER>, documentPageFormat);

printJob.setPageable(book);

if (printJob.printDialog()) {
try {
printJob.print();
} catch (Exception PrintException) {
PrintException.printStackTrace();
}
}
"

Voila, il y a certainement plus court mais ça marche super bien.

++
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
2 août 2009 à 11:10
@alex198710

Salut,
Non, je n'ai pas touché à ce code depuis 5 ans maintenant.
Je ne sais pas où en est Java pour les impressions 5 ans plus tard :)

Pour la taille des pages, j'imagine qu'il faudrait plutôt prévoir un dialogue "Mise en Page" dans l'application principale, et donner les dimensions et l'orientation du papier en argument à ce dialogue là...
De toute façon, il faudrait aussi refaire complètement le dialogue avec autre chose que GridBagLayout pour qu'il soit plus souple et plus facilement modifiable.

Je n'ai pas vraiment le temps de refaire ça, et je n'ai pas d'imprimante actuellement (encore pire, je n'ai pas de système d'impression sur ce pc :))
alex198710 Messages postés 6 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 3 août 2009
30 juil. 2009 à 11:36
Bonjour,
Existe t-il une nouvelle version qui permet d'imprimer en A3 et en A4?
Merci d'avance
elouachanirachid Messages postés 1 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 19 janvier 2005
19 janv. 2005 à 19:01
hello,
je voudrais savoir comment creer un API d'un imprimer les document et les base de donner.merci.
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
4 août 2004 à 19:48
Retour à PrintJob, avec quelques modifications
finalement, la gestion de la résolution d'impression ne se fait pas dans le programme mais dans la boîte de dialogue de l'imprimante
(en fait, le paramètre résolution d'un PrintJob est indépendant de la résolution d'impression)
il n'y a plus aucun problème avec les tailles d'impression

Cette fois-ci tout semble marcher
désolé, pas encore de gestion du format de papier

Salut
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 12:06
ok merci
je vais essayer de reprendre ton prog avec le printjob sur une autre imprimante et si ca marche je te rajoute la config de la resolution sinon...(triste...) faut que ca marche...
a+
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
4 août 2004 à 11:58
Non, ca ne me dérangerais pas du tout, au contraire, mais je part demain jusqu'au 19-20 aout donc ce sera pour plus tard !!
(le seul problème, c'est que je ne peux pas connaitre les résolutions acceptées par l'imprimante, mais je peux laisser un choix)

sinon, voila les attributs acceptés par mon imprimante :
class javax.print.attribute.standard.JobName
class javax.print.attribute.standard.RequestingUserName
class javax.print.attribute.standard.Copies
class javax.print.attribute.standard.Destination
class javax.print.attribute.standard.OrientationRequested
class javax.print.attribute.standard.PageRanges
class javax.print.attribute.standard.Media
class javax.print.attribute.standard.MediaPrintableArea
class javax.print.attribute.standard.Fidelity
class sun.print.SunAlternateMedia
class javax.print.attribute.standard.Chromaticity
class javax.print.attribute.standard.Sides
class javax.print.attribute.standard.SheetCollate

ouaip, ya pas la résolution, ni la qualité

PrinterJob, c'est de la m***e

A+
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 11:21
Sinon est-ce que ca te derangerait si tu reviens sur le printJob de faire un truc pour config la resolution afin d'avoir le choix de celle-ci? (A4 ou A3)...
Merci
a+
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 11:17
erreur c'est pas javax .swing mais javax.print...
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 11:17
Et en utilisant uniquement les classes de javax.swing?
J'ai vu qu'il y avait pas mal de choses pour definir des Attribute. Maintenant je sais pas trop comment ca marche...
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
4 août 2004 à 11:12
c'est ce sue j'étais en train d'essayer de faire mais ca marche pas ;-(
même si je change la qualité de l'impression avec PrintQuality, la qualité est bien changée dans la boîte de dialogue de l'imprimante, mais pas lors de l'impression...
triste...
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 11:08
j'ai vu que dans cette class il y a la classe ResolutionSyntax. Peut etre pourrais-tu t'en servir pour changer ta resolution?...
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
4 août 2004 à 10:59
le max ?
sinon, si tu passes par les javax.print.attribute (MediaTray je crois) pour indiquer le bac, ce n'est pas sur que ce soit reconnu par l'imprimante, malheureusement...
je vais faire quelques tests mais sinon, je crois que je vais revenir à PrintJob !
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
4 août 2004 à 08:34
ok bon deja ca marche en a4 c'est deja super...
Par contre ne saurais-tu pas pq dans le printerJob il fixe systematiquement le max a 9999.
J'ai vu que dans la version precedente le max etait a 1.
Serait-il possible aussi de la fixer a 1 pour un PrinterJob? ca m'arrangerait beaucoup...
Par contre je devrais faire aussi des impressions A3 et la c'est vrai que ca plante car j'ai beau lui indiquer le bon bac où prendre les feuilles A3, par de faut il choisit le bac manule, donc uniquement des feuilles A4. snif...
Donc si tu pouvais me depanner encore une fois, je t'en serais extremement reconnaissant.
Merci
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
4 août 2004 à 00:02
ARGHH réctification : ca déconne lorsque je change la résolution de l'imprimante !!!

je reviens à PrintJob ?
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
3 août 2004 à 23:03
Voila, comme je suis toujours pas en vacance ;-)
je l'ai réécrite en utilisant PrinterJob
mes craintes sur la résolution étaient sans fondement
;-o
ca marche très bien

y a t-il toujours des erreurs ?

PS : ce qui est sur la capture d'écran : j'espère à la rentrée dans les sources ;-)

A+
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
2 août 2004 à 16:48
j'ai regardé sur le site de sun, il n'y a pas de bug récent concernant printJob mais je demanderais quand même au forum de tester mon programme

Salut
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
2 août 2004 à 14:56
ouaip, c'est ennuyeux car j'avais l'intention d'utiliser ma boîte dans un programme
j'ai aussi une epson et ca passe

je vais bientôt partir en vacance donc je vais pas avoir le temps de m'en occuper mais quand je serais de retour(19-20 aout), je mettrais un post sur le forum pour demander de tester le programme en indiquant si ca fonctionne ou non sur quelle configuration

ca vient peut-être du fait que j'utilise le vieux PrintJob au lieu de PrinterJob
(je trouve printJob beaucoup plus efficace et pratique... et surtout, je sais pas régler la résolution avec PrinterJob donc c'est inutilisable...)
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
2 août 2004 à 13:28
il m'ouvre une fenetre avec le titre : EPSON dont le message est : erreur d'impression.
c'est tout.
C'est peut etre un message du pilote de l'imprimante.
Ce qui est etrange c'est que si je passe par une impression classique sans ton systeme, il m'imprime ma page... alors je sais pas trop.
Merci
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
2 août 2004 à 12:21
Bah je sais pas, ca marche sans problème chez moi ;-p

Est-ce que tu pourrais me donner tout le message d'erreur STP ?

je vais refiaire une petite MAJ mais c'est juste pour supprimer une sortie sur System.out que j'ai oublé de retirer
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
2 août 2004 à 12:00
voila j'ai essaye ce code et chez moi il ne marche pas correctement : il me met systematiquement l'erreur suivante : erreur impression.
Je sais pas d'ou ca vient, j'arrive pas a voir ou c'est dans le code.