Impression frame

Signaler
Messages postés
11
Date d'inscription
jeudi 8 juillet 2004
Statut
Membre
Dernière intervention
22 mars 2006
-
Messages postés
37
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2012
-
Bonjour, voila j'ai un formulaire graphique et je veux imprimer ce formulaire, j'ai donc récuperé une classe qui me permet d'imprimer ma fenetre, ce qui marche tres bien, mais un problème se pose, ma fenêtre est plus haute et plus large qu'une feuille A4, donc l'impression est tronquée, Y a t'il un moyen de mettre en page l'impression, d'imprimer plus petit,...

Merci d'avance, voici mon code d'impression :

package labo;


import java.awt.*;
import javax.swing.*;
import java.awt.print.*;


public class Impression implements Printable {
private Component componentToBePrinted;


public static void printComponent(Component c) {
new Impression(c).print();
}


public Impression(Component componentToBePrinted) {
this.componentToBePrinted = componentToBePrinted;
}


public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
PageFormat pf = printJob.defaultPage();


Paper papier = new Paper();
double gauche = 10.0 * 72 / 25.4;
file: //fait une marge de 10 mm (donc 10/25.4 pouces avec un point =1/72 pouces)


papier.setImageableArea(gauche, 0.0, papier.getWidth() - 2*gauche, papier.getHeight());
pf.setPaper(papier);
file:
printJob.setPrintable(this,pf);
if (printJob.printDialog())
try {
printJob.print();
} catch(PrinterException pe) {
System.out.println("Error printing: " + pe);
}
}


public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;


g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
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);
}
}

merci d'avance a tous,

1 réponse

Messages postés
37
Date d'inscription
jeudi 8 novembre 2007
Statut
Membre
Dernière intervention
18 mai 2012