Boa noite, tenho este método que com ele consegui imprimir um jPanel:
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName("Print JPanel");
job.setPrintable((Graphics pg, PageFormat pf, int pageNum) -> {
if (pageNum > 0) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) pg;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.scale(1.0, 1.0);
jPanel1.paint(g2);
return Printable.PAGE_EXISTS;
});
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
} catch (PrinterException e) {
e.printStackTrace();
}
}
Porém, no método o g2.scale(1.0, 1.0); eu não consigo usar de forma que ele se adeque a pagina de impressão automaticamente, ele sempre ficar maior que a pagina A4 ou menor, sendo que para ter um resultado satisfatório tenho que ficar mexendo manualmente no g2.scale(1.0, 1.0);. Já tentei getWidth, getHeight de todas as formas possíveis pegando as classes do PageFormat e não tive sucesso. Alguém já passou por algo parecido que possa me ajudar?