Salut à tous,
Dans le programme que je développe, j'ai une fonction imprimer qui me permet d'imprimer mon panel principal.
J'arrive très bien à l'imprimer en A4, je redimensionne le panel et le tour est joué.
Par contre, quand je veux imprimer en A3, l'imprimante me sort bien une feuille A3 mais le dessin dessus est de la même taille que celui du A4 et en plus il est coupé
Y a t il une méthode pour savoir si l'utilisateur choisi A3 ou A4 dans l'espoir de redimension en fonction du format de page choisi ?
Ou peut être qu'il y a une erreur dans mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part PrintUtilities.printComponent(panelPrincipal);
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 import java.awt.*; import javax.print.attribute.PrintServiceAttributeSet; import javax.swing.*; import java.awt.print.*; public class PrintUtilities implements Printable { private Component componentToBePrinted; private PageFormat pageFormat; public static void printComponent(Component c) { new PrintUtilities(c).print(); } public PrintUtilities(Component componentToBePrinted) { this.componentToBePrinted = componentToBePrinted; } public void print() { PrinterJob printJob = PrinterJob.getPrinterJob(); printJob.setPrintable(this); pageFormat = printJob.defaultPage(); if (printJob.printDialog()) try { PrintServiceAttributeSet psas = printJob.getPrintService().getAttributes(); System.out.println(psas.size()); printJob.print(); } catch(PrinterException pe) { System.out.println("Error printing: " + pe); } } public int print(Graphics g, PageFormat pf, int pageIndex) { if (pageIndex > 0) { return(NO_SUCH_PAGE); } else { Dimension tailleDoc = componentToBePrinted.getSize(); double hauteurDocu = tailleDoc.getHeight()+20; double hauteurPage = pf.getImageableHeight(); double largeurDocu = tailleDoc.getWidth()+20; double largeurPage = pf.getImageableWidth(); double scaleX = largeurPage / largeurDocu; double scaleY = hauteurPage / hauteurDocu; double ratio = Math.min(scaleX, scaleY); Graphics2D g2d = (Graphics2D)g; g2d.scale(ratio, ratio); g2d.translate(pf.getImageableX()+20, pf.getImageableY()+20); g2d.drawString("Edit : 29/05/09 13:19:01", (int) tailleDoc.getWidth()-350, (int)-50); g2d.drawString("Tolérances", (int) tailleDoc.getWidth()-350, (int)50); disableDoubleBuffering(componentToBePrinted); componentToBePrinted.paint(g2d); enableDoubleBuffering(componentToBePrinted); return(PAGE_EXISTS); } } public static void disableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(false); } public static void enableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(true); } }
Partager