Bonjour,
Je me doute que tu as trouvé une solution depuis longtemps mais pour ceux que ça intéresse et qui sont confronté à des problèmes d'impression liés a l'orientation "paysage" et/ou à la mise à l'échelle d'une fenêtre par rapport à la taille de la page :
1/ Implémenter l'interface "Printable" :
public class FrmChart extends JFrame implements Printable
et donc surcharger la méthode "print()" :
1 2 3 4 5 6 7 8 9 10 11
|
/**
* Implémentation de l'interface Printable
*/
public int print(Graphics g, PageFormat pf, int indexPage) throws PrinterException {
if(indexPage>0) return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.scale( pf.getImageableWidth()/getContentPane().getWidth(),pf.getImageableHeight()/getContentPane().getHeight());
getContentPane().printAll(g2);
return Printable.PAGE_EXISTS; |
c'est ici que l'on gère la mise à l'échelle via "translate" et "scale"...
2/ Il reste à présent à récuperer une instance de PrinterJob et à lancer l'impression :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
else if(actionCmd.equalsIgnoreCase("OnPrint"))
{
PrinterJob tache = PrinterJob.getPrinterJob();
PageFormat pf = tache.defaultPage();
pf.setOrientation(PageFormat.LANDSCAPE);
tache.setPrintable(FrmChart.this, pf);
if(tache.printDialog())
{
System.out.println("-------- Impression de la courbe ----------");
try
{
tache.print();
}
catch(Exception ex)
{
System.out.println("impossible dimprimer");
ex.printStackTrace();
}
System.out.println("------ Fin impression ------");
}
} |
C'est ici que l'on gère le format "paysage" par défaut !
Partager