Problemas com impressão em linux

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)

Alguém pode me ajudar?

Diz na api:

IllegalArgumentException - if services is null or empty, or attributes is null, or the initial PrintService is not in the list of browsable services.

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/ServiceUI.html

[]'s

[quote=spyrogyra]Diz na api:

IllegalArgumentException - if services is null or empty, or attributes is null, or the initial PrintService is not in the list of browsable services.

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/ServiceUI.html

[]'s[/quote]

Certo, mas porque no windows os servicos de impressao vem e no linux o array vem vazio? nao entendi… alguem sabe pq isso acontece?

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?

No release do Java 6u2, tinha um ponto que falava: “Linux printing fixed”, ou algo parecido.

Também não consigo imprimir no Linux, nem pelas ferramentas de report.

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… :frowning:

Agora fuçando mais ainda consegui fazer ela imprimir uns codigo mto louco… nada do que deveria… algo do tipo:

/mStr 0 def /imageSrc {currentfile /ASCII85Decode filter /RunLengthDecode filter imStr readStr ing pop } def
/BD {bind def} bind def
/D {def} BD

:shock: :shock: :shock: :shock: :shock:

Article #433: Why is Java is unable to print to my CUPS 1.2 printers ?

http://www.cups.org/articles.php?L433+I0+TFAQ+M10+P1+Q

Conseguiram fazer imprimir no Linux?