Impression frame

Dedeloux Messages postés 11 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 22 mars 2006 - 5 juil. 2005 à 15:40
cs_sikou100 Messages postés 37 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 18 mai 2012 - 17 avril 2008 à 12:58
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

cs_sikou100 Messages postés 37 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 18 mai 2012
17 avril 2008 à 12:58






0
Rejoignez-nous