J'ai donc 2 panneaux dans 1 panneau. Sur 1 panneau est le graphique, et sur la seconde est quelques informations. Je veux imprimer ce panneau qui contient ce panneau. J'ai donc utilisé quelques astuces pour que le panneau s'adapte au papier, mais cela n'a pas fonctionné complètement. Voici mon travail d'impression:Ajuster le panneau sur le papier
public void printComponenet(Component comp){
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Print Component ");
PageFormat pf = pj.defaultPage();
pf.setOrientation(PageFormat.LANDSCAPE);
pj.setPrintable (new Printable() {
public int print(Graphics g, PageFormat pf, int pageNum){
if(pageNum > 0)
{
return Printable.NO_SUCH_PAGE;
}
Dimension compSize = comp.getPreferredSize();
comp.setSize(compSize);
Dimension printSize = new Dimension();
printSize.setSize(pf.getImageableWidth(), pf.getImageableHeight());
double scaleFactor = getScaleFactorToFit(compSize, printSize);
if(scaleFactor > 1d)
{
scaleFactor = 1d;
}
double scaleWidth = compSize.width * scaleFactor;
double scaleHeight = compSize.height * scaleFactor;
Graphics2D g2 = (Graphics2D) g.create();
double x = ((pf.getImageableWidth() - scaleWidth)/2d) + pf.getImageableX();
double y = ((pf.getImageableHeight() - scaleHeight)/2d) + pf.getImageableY();
AffineTransform at = new AffineTransform();
at.translate(x, y);
at.scale(scaleFactor, scaleFactor);
g2.transform(at);
comp.printAll(g2);
g2.dispose();
comp.revalidate();
return Printable.PAGE_EXISTS;
}
}, pf);
if (pj.printDialog() == false)
return;
try {
pj.print();
} catch (PrinterException ex) {
// handle exception
}
}
Et lorsque j'imprime ce panneau, il ressemble à ceci.
Comment le réparer? Le côté inférieur du papier est correct, je ne l'ai pas complètement pris en photo.
Si le côté inférieur est OK, alors quels problèmes avez-vous spécifiquement? –
Si vous regardez de plus près, vous verrez que sur le dessus du papier, les nombres sont coupés, et un peu de graphique est coupé – Quadrition
Où est votre méthode 'getScaleFactorToFit (...)'? Et avez-vous voté MadProgrammer (où vous semblez avoir emprunté ce code)? –