Bonjour,
après un mois de recherche, je n'arrive toujours pas à imprimer une image en 150dpi.
Es-ce possible en JAVA, d'avoir autre chose que du 72dpi ?
Oui j'ai lu le document de Bruno RICHETON. Merci à lui pour cette étude. Mais je ne cherche pas à imprimer un rectangle, mais une image.
Mon programme arrive à faire cracher mon imprimante, 2 types d'image:
- une image en 150dpi... mais que dans le quart supérieur gauche de la feuille
- une image en 300 dpi qui occupe le quart supérieur gauche de la feuille.
J'en conclus qu'il y a quelque chose qui limite la zone d'impression...mais quoi ? Un peu de code pour vous expliquer mon problème:
* Dans la classe pricipale:* Ma classe de gestion de l'impression:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 private PrinterJob imprimeurPage = PrinterJob.getPrinterJob();; private GMO_ImprimeImage gemoImprimePanel = new GMO_ImprimeImage(); // C'est ma classe qui s'occupe de l'impression d'une BufferedImage /.../ public void imprimeBImage( BufferedImage imageImprimable ) { PrintRequestAttributeSet optionsImpression; gemoImprimePanel.metImagelImpression( imageImprimable ); // Transmets l'image qu'il va falloir imprimer imprimeurPage.setPrintable( gemoImprimePanel ); // Déclare ma classe d'impression au PrinterJob optionsImpression = new HashPrintRequestAttributeSet(); optionsImpression.add( new PrinterResolution( 150, 150, PrinterResolution.DPI )); try { imprimeurPage.print( optionsImpression ); } catch ( Exception pE ) { SystemOut( pE.getMessage()); }Quelques dimensions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class GMO_ImprimeImage implements Printable { /.../ @Override public int print( Graphics gContexte, PageFormat pageJava, int index_page ) throws PrinterException { Graphics2D g2D; Rectangle limitesContexte; int y_pix_doc, x_pix_doc, y0_doc, x0_doc, y_pix_imprimable, x_pix_imprimable; double ratio; if( index_page > 0 || bImageImpression == null ) // bImageImpression correspond à la BufferedImage à imprimer, transmise à la classe return Printable.NO_SUCH_PAGE; // Plus rien à imprimer y_pix_doc = bImageImpression.getHeight(); // Nombre de pixels du document à imprimer x_pix_doc = bImageImpression.getWidth(); /.../ // Création du contexte graphique à imprimer: g2D = (Graphics2D)gContexte; // Si je mets les 2 lignes suivantes, j'ai toute l'image mais en 300dpi ratio = pageJava.getImageableHeight() / y_pix_doc; g2D.scale( ratio, ratio ); g2D.translate( 150, 150 ); // Translation du graphique vers la zone imprimable g2D.drawImage( bImageImpression, 0, 0, null ); }
- L'image à imprimer fait 939 px de large, 1440 px de haut, ce qui correspond à 6,25 pouces x 9,6 pouces en 150dpi
- PageFormat pageJava indique pour un PrinterJob à 150 dpi:
1239 px de large, 1753 px de haut, auxquelles il faut retirer les marges.
En tout cas, c'est suffisant pour contenir l'image.
Quelqu'un a-t-il une idée sur le sujet ?
Merci.
Partager