Imprimir em matricial na rede

3 respostas
joseguilherme

Saudações amigos,

Tenho que imprimir documentos fiscais de transporte usando impressoras matriciais com formulário contínuo.
O software roda localmente desktop, com interface swing.
Quando a impressora está conectada à máquina que está rodado a aplicação eu consigo facilmente imprimir gravando diretamente na LTP1, quando uso windows, ou /dev/lp0 quando linux.
Alguém sabe como imprimir dessa forma quando a impressora matricial estiver compartilhada em um máquina da rede?
Praticamente todos nos tópicos do forum que tiveram problema parecido para imprimir relatórios, usaram o JasperReports, mas não me serve este tipo de solução pq o que o jasper gera não é texto puro para a impressora, ela imprimiria como gráfico, isso deixa muito lento e não consigo trabalhar com os comandos de baixo nível para trocar fonte, condensar etc.

3 Respostas

T

No caso específico do Windows - será que não dá para usar aquele driver “Generic / Text Only” (não sei como é em português), e mandar alguns comandos diretamente? Você poderia tentar fazer o seguinte:

  • instalar a impressora remota com esse driver;
  • redirecionar a impressora (talvez com o comando do DOS mode lpt1=\computador\impressora )
Luca

Olá

2 modos:

  1. Você pode usar o Java Print Service. Já usei para isto que você quer e funciona direitinho. Pode ser que tenha um pouco de trabalho até enquadrar os campos certinho porque a impressão é por coordenadas e não direto como um dump.

  2. Ou simplesmente jogar a saída para uma impressora. Os comandos de baixo nível já devem estar embutidos no texto à imprimir. Isto funciona também perfeitamente.

O fato da impressora estar na rede não importa para o Java. Ele vai buscar a LPT1 no IP em que ela estiver configurada.

[]s
Luca

joseguilherme

thingol,
não consegui usar o comando que vc disse

mode lpt1=\\computador\impressora mas adicionei a impressora utilizando este outro driver que vc disse, texto puro, o nome é esse mesmo “Generic / Text Only”.
Imprimi usando o comando DOS print:

print arquivo.txt /d:\\computador\impressora isso resolveu para imprimir pela rede no windows.

No linux, instalei o pacote cliente do cups (cupsys-client no debian), e usei a mesma idéia configurei a impressora pelo cups com o driver RAW que tem o mesmo efeito do “Generic / Text Only” e imprimo com o comando lp:

lp -d impressora arquivo.txt

Isso no código java ficou assim:

Runtime.getRuntime().exec("lp -d impressora arquivo.txt");

Luca,
Java Print Service vai merecer um estudo maior que uma simples manhã de testes, mas já vi que ele tem coisas que eu vou precisar como descobrir impressoras e detectar quais os formatos de impressão que ela aceita.
Vou dar uma boa estudada nele e é o que eu quero usar, mas se me apertarem (o que provavelmente vai acontecer :smiley: ) coloco pra funcionar com o que já consegui hoje.

Agradeço a ajuda de todos, obrigado.

Criado 25 de outubro de 2006
Ultima resposta 26 de out. de 2006
Respostas 3
Participantes 3