Bonjour,
Je cherche à imprimer un Graphics2D qui est assez long sur plusieurs pages. J'ai donc farfouiller sur les topics qui en parlent (http://www.developpez.net/forums/d10...primer-jtable/, http://www.developpez.net/forums/d23...ob-graphics2d/ et http://www.developpez.net/forums/showthread.php?t=53139) mais je n'arrive pas à les adapter à mon code. Mon problème c'est que la première page marche nikel mais les autres moins.
Quelqu'un pourrait me corriger l'erreur que je n'aurais pas remarqué ? Voici mon code :
PS : "nb_ligne" est le nombre de ligne que comprends mon tableau et "ht" la hauteur d'une ligne.
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 @Override public int print(Graphics g, PageFormat pf, int index_page) { int htext = (int)g.getFontMetrics().getStringBounds("", g).getHeight(); int zone_imprimable = (int)(Math.ceil(pf.getImageableHeight())-15-htext); // Calculer le nombre de page à imprimer nb_page = Math.max (1, ((nb_ligne*ht)/zone_imprimable)); if (index_page >= nb_page) return NO_SUCH_PAGE; Graphics2D g2d = (Graphics2D)g; //Définir la hauteur du graphique sur une page Dimension dim = new Dimension(790, (int)Math.ceil(pf.getImageableHeight())); // Positonne le graphique à l'origine de la zone d'impression g2d.translate((int)pf.getImageableX()+30, (int)pf.getImageableY()); // Dimension de la page double pageWidth = pf.getImageableWidth(); //page width double pageHeight = pf.getImageableHeight(); // Page height // Redimensionner en largeur si trop grand if (dim.width > pageWidth) { double factor = pageWidth/dim.width; // Echelle de redimensionnement g2d.scale(factor, factor); // Redimensionner le graphique pageWidth /= factor; // Modifier la taille du graphique pageHeight /= factor; } // Centrer le graphique sur la page g2d.translate((pageWidth-dim.width)/2,(pageHeight-dim.height)/2); // Découpe le graphique en fonction de la page courante if (nb_page>1){ g2d.setClip(0, zone_imprimable*index_page, 790, zone_imprimable); } dessinerEdt(g2d, dim); return PAGE_EXISTS; }
Encore merci pour votre aide.
Partager