Imprimir em impressora secundária JasperReport

4 respostas
jsfjavaprogramação
D

Caros, boa noite.
Estou um quanto tanto perdido em um problema.
Preciso imprimir o mesmo relatório feito em Jasperreports em duas impressoras sem interação do usuário.
Na primeira impressora consegui imprimir normalmente através do código JasperPrintManager.printReport(print, false);
Agora como posso imprimir na segunda impressora?
Meu projeto é em JSF e ambas as impressoras estão instaladas no servidor via usb.

4 Respostas

darlan_machado

Você conseguiu imprimir diretamente por ter usado a impressora padrão.
Provavelmente você precisará de script para identificar e selecionar a impressora secundária.
Isso, no meu entendimento, não tem a ver com o jasper report, pois o mesmo roda sobre o SO.

D

Saberia alguma forma de fazer isso em Java Web? O Cliente não precisa especificamente selecionar a impressora, se tivesse um modo de setar o endereço dela antes de imprimir já ajudaria.
Estava lendo sobre PrintService e PrinterJob em Java, mas ambos os exemplos utilizam a impressora padrão.

darlan_machado

Cara, existem problemas na vida para os quais não existe uma solução pronta (tipo a fórmula de Bháskara).
1 - https://stackoverflow.com/questions/15274328/how-to-get-the-list-of-printers-in-java
2 - https://stackoverflow.com/questions/14885993/how-do-i-specify-the-printer-i-want-to-use-in-java
Mas, você pode quebrar em pequenas partes e, então, resolver cada situação de um modo específico.

D

Obrigado pela dica amigo.
Consegui implantar utilizando o seguinte método

PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();

printRequestAttributeSet.add(new MediaPrintableArea(0, 0, print.getPageWidth(), print.getPageHeight(), MediaPrintableArea.INCH));	
	//printRequestAttributeSet.add(MediaSizeName.ISO_A4);
	PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
	printServiceAttributeSet.add(new PrinterName(configuracoes.getImpressora1(), null));
			JRPrintServiceExporter exporter = new JRPrintServiceExporter();
	SimplePrintServiceExporterConfiguration configuration = new SimplePrintServiceExporterConfiguration();
	configuration.setPrintRequestAttributeSet(printRequestAttributeSet);
	configuration.setPrintServiceAttributeSet(printServiceAttributeSet);
	configuration.setDisplayPageDialog(false);
	configuration.setDisplayPrintDialog(false);
	exporter.setExporterInput(new SimpleExporterInput(print));			
	exporter.setConfiguration(configuration);
	exporter.exportReport();

Acabei me deparando em outro problema, consigo imprimir caso a impressora esteja conectada via USB, mas tem uma impressora compartilhada em outro pc que não consegui imprimir de forma alguma.
Alguem saberia me ajudar?

Criado 20 de agosto de 2019
Ultima resposta 30 de ago. de 2019
Respostas 4
Participantes 2