Pessoal tenho um código para impressoes matriciais rodando em windows q ta funcionando que é uma beleza… mas em linux ta dando pipoco…
o código é esse:
//Attribute Set storage
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//We're looking for Text-capable printers
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//Return list of printers capable of printing Text
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//Get the default printer
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//Display the print dialog with default printer selected
pras.add(new JobName(jobName, null));
pras.add(MediaTray.MAIN);
//Se o nome da impressora não foi passado então abre a janela para o usuario escolher
PrintService service = ServiceUI.printDialog(null, 50, 50, printService, defaultService, flavor, pras); //Aki da pipoco
E ele levanta uma exceção na ultima linha:
Exception in thread "Thread-7" java.lang.IllegalArgumentException:
services must be non-null and non-empty
at javax.print.ServiceUI.printDialog(ServiceUI.java:149)
at br.com.datamanager.jvsreporter.util.PrintComm.sendTextToPrinter(PrintComm.java:46)
at br.com.datamanager.jvsreporter.gerador.service.ImpressaoService$2.run(ImpressaoService.java:106)
at java.lang.Thread.run(Thread.java:619)
Andei olhando na internet e parece q mta gente tem tido esse problema… parece q o metodo lookupPrintServices() nao esta retornando as impressoras configuradas no linux… será um bug da JVM?
Cara…as impressoras do linux normalmente são configuradas no cups e acho q o java nao encontra o cups…a solucao que dei uma vez que precisei foi ao inves de usar printerService enviar os dados diretamente para a porta
O problema de achar as impressoras eu resolvi… realmente não pode configurar a impressora pelo CUPS, é preciso configurar diretamente no SO e passar o caminho SMB e tal… agora o metodo retorna as impressoras do sistema certinho… manda imprimir e tudo mais… agora o problema q ta pegando é que o documento chega na fila de impressao do SO e dá um erro, e o SO nao ta enviando pra impressora…
alguém faz ideia de pq isso acontece?
Fuçando aqui consegui um avanço… fui nas configurações da impressora e mudei o Print System Current de CUPS para LPR/LPRNG, então o documento parou de dar erro na fila de impressão e começou a mostrar o estado Queued, depois de tempo Processing… e depois some da fila… mas tb nao imprime ainda…