Como realizo a impressão sem mostrar o dialogo e gostaria também dentro de uma Combobox
selecionar a impressora e imprimir em cima dela?
public void printComponenet(JComponent component){
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("Personalizacao");
pj.setPrintable (new Printable() {
@Override
public int print(Graphics graphics, PageFormat pageFormat,
int pageIndex) throws PrinterException {
if (pageIndex > 0){
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) graphics;
g2.translate(pageFormat.getImageableX(),pageFormat.getImageableY());
component.paint(g2); // o JPanel aqui
return Printable.PAGE_EXISTS;
// TODO Auto-generated method stub
}
});
if (pj.printDialog() == false)
return;
try {
pj.print();
} catch (PrinterException ex) {
// handle exception
}
}
1 curtida
Para não exibir o diálogo, você precisa remover as linhas abaixo:
if (pj.printDialog() == false) // remova essa
return; // e essa
// resto do código segue normal
try {
pj.print();
....
Para colocar as impressoras no Combo, você pode pegá-las do sistema: https://stackoverflow.com/questions/410967/how-do-i-get-a-list-of-installed-printers
E setá-las no PrintJob com algo mais ou menos assim: https://stackoverflow.com/questions/4177531/force-target-printer-in-java
Abraço.
rlira
Fevereiro 12, 2019, 2:09pm
#3
Olá Senhores bom dia, este código serve para impressão de PDF´s? estou com um problema não consigo fazer a impressão direta de arquivos pdf´s para a impressora, postei aqui hoje uma pergunta sobre isto poderiam dar uma força nesta questão?
Obrigado Robson
Funcionou corretamente,
porém a formatação ficou errada da pagina, parece que ele deixou uma margem de 5 cm para todos os lados, será que tem como tirar essas margens?
Segue arquivo como ficou
Personalizacao.pdf (8,6 KB)