Site imprimindo etiquetas impressora Zebra

Olá amigos preciso da ajuda de vcs, possuo a seguinte necessidade, imprimir etiquetas em uma impressora Zebra que vai estar instalada no cliente.

A forma de imprimir já testei utilizando um exemplo do site da DevMedia, e tudo deu certo mas este teste foi feito com JavaSE local, apontando para a porta da impressora.

Minha duvida é como imprimir as etiquetas em uma impressora instalada no cliente?

Obrigado!

Não faço a mínima ideia de como funciona a implementação de segurança nos applets, mas, que me lembre, você pode colocar os applets como uma alternativa (GAMBIARRA?). :?

ta mais o acesso vai ser via web (html), ou desktop e o cliente terá acesso remoto através do Terminal Server ?

Aplicação Web, Jsp em um servidor Jboss, pode ser utilizado JSF também.

Uma vez fiz um programa pra imprimir via Web, o site era em PHP, usei java Applet pra isso. O site enviava o Applet já autenticado para o cliente. O Applet pedia pro cliente selecionar a impressora térmica, montava o código EPL com os comandos de impressão, depois mandava o código pra impressora. Usei a impressora Zebra TLP2844.

É isso que eu preciso, tenho os codigos EPL mas não sei como fazer, tem como dar uma explicada mais detalha, se possivel passar codigos?
A impressora estava instalada via usb ou porta paralela?
Valeu!

Uma dica: Se a impressora estiver conectada via USB é melhor utilizar um gerenciador de relatório como o IReport, já que você esta utilizando sistema WEB

Ireport irá auxiliar apenas na montagem do label a ser impresso, agora ele consegue enxergar a impressora instalada na maquina cliente? Realizar a impressão? Se sim vou correr atras dele agora, mas o que eu sei é apenas para montar relatórios.

O jeito que fiz não acho que seja o ideal porque gera um arquivo, e esse arquivo eu envio pra impressora.
Bom, vou mostrar como fiz na impressora Zebra TLP2844, pra outros modelos eu não sei se funcionaria do mesmo jeito.
Esse procedimento não é o melhor, mas foi o que funcionou.
A primeira coisa que você precisa fazer é colocar a impressora em modo de compartilhamento, como o cliente usava o Windows, fiz da seguinte maneira:

  1. Tornar a impressora compartilhada
    1.1) Localizar a impressora no painel de controle
    1.2) Clicar com o botão direito em cima do ícone e ir nas propriedades da impressora
    No Windows 7 é a opção "Propriedades da impressora"
    No Windows XP é a opção "Propriedades"
    1.3) Ir na aba compartilhamento, dar um nome para o compartilhamento da impressora

  2. No java fiz os comandos serem enviados pra porta LPT1. Se estiver usando USB, ativar o pool de impressão selecionando LPT1 e o USB da impressora e clicar na caixa de selação “Ativar pool de impressão” e “Ativar suporte bidirecional”.

  3. Gerar um arquivo com o código EPL e salvar com uma extensão qualquer (suponha que o arquivo esteja em C:\)

  4. Pegar o nome do computador onde está a impressora

  5. Abrir o prompt de comando e digitar
    Type C:\codigoEPL.txt > \nomeComputador\nomeImpressora

Se vc ver um jeito de usar o ireport ou outputstream ou outro método pra não precisar gerar o arquivo, posta aí pra ver, to querendo fazer isso sem precisar gerar arquivo.

Aqui na empresa tinhas justamente esse modelo de impressora Zebra TLP 2844, agora usamos o modelo S4M. O IReport acredito que irá funcionar sim na WEB, pois aqui utilizamos para desktop para fazer imprimir etiquetas.

[quote=Beto Sagaz]O jeito que fiz não acho que seja o ideal porque gera um arquivo, e esse arquivo eu envio pra impressora.
Bom, vou mostrar como fiz na impressora Zebra TLP2844, pra outros modelos eu não sei se funcionaria do mesmo jeito.
Esse procedimento não é o melhor, mas foi o que funcionou.
A primeira coisa que você precisa fazer é colocar a impressora em modo de compartilhamento, como o cliente usava o Windows, fiz da seguinte maneira:

  1. Tornar a impressora compartilhada
    1.1) Localizar a impressora no painel de controle
    1.2) Clicar com o botão direito em cima do ícone e ir nas propriedades da impressora
    No Windows 7 é a opção "Propriedades da impressora"
    No Windows XP é a opção "Propriedades"
    1.3) Ir na aba compartilhamento, dar um nome para o compartilhamento da impressora

  2. Gerar um arquivo com o código EPL e salvar com uma extensão qualquer (suponha que o arquivo esteja em C:\)

  3. Pegar o nome do computador onde está a impressora

  4. Abrir o prompt de comando e digitar
    Type C:\codigoEPL.txt > \nomeComputador\nomeImpressora

[/quote]

Aqui funcionou tb, agora vou pensar em algo para rodar no cliente!

Veja se este site te ajuda: http://ireport-guide.blogspot.com/2008/05/how-to-execute-jasper-report-through.html

Cara a impressão via dos funcionou, mas agora não quer mais funcionar,não sei porque eu envio o comando e a impressão aparece e some do gerenciador de impressão e nada é impresso.

Cara olha o que eu achei

http://code.google.com/p/jzebra/

é um projeto que o cara consegue acessar a impressora direto do cliente e enviar os comandos EPL para impressão testei aqui e deu certo a impressora imprime, tudo via applet, ai tb tem o codigo fonte estou estudando ele agora para ajustar a minha necessidade, vale a pena olhar!

Baixei o exemplo no site e gera uma exceção “Printer is not accepting job”. Tentei usar um esquema parecido e gerava a mesma exceção, não sei como resolver isso. O projeto foca bem nessa necessidade, parece bem útil pra essas impressoras. Só sinto falta de um suporte oficial da empresa com exemplos de uso em java.

Estranho aqui usando a pagina de exemplo ele reconheceu a impressora e consegui imprimir, unico problema é que ao tentar imprimir sempre imprime a mesma coisa um logo do windows escrito pagina de teste, e no codigo fonte era para ser impresso outra coisa.

Olha que show este demo, aqui deu certinho a impressão segue abaixo

http://justtesting.biz/html/jzebra/jzdemo.html

Então, ve o pool de impressão pra ver se resolve. Quando a impressora da uma de “louca” eu vejo o arquivo EPL que tem que finalizar com uma linha em branco, depois do último comando vc deve pular uma linha. Se o arquivo EPL, o Pool e o compartilhamento estiverem ok, tenta ainda apagar todos os arquivos de impressão que não foram impressos na pasta “C:\Windows\System32\spool\PRINTERS”, exclui tudo, esses são os arquivos da fila de impressão.
Se ainda não resolver o problema, vc pode tentar jogando os comandos diretamente para a impressora, vai no painel de controle, acha a impressora e vai nas propriedades dela (que nem no item 1 do tutorial). Depois vai na guia Printer > Advanced > Tools e clica no botão Tools.
Digite P1 e clique em Send. Se nada disso resolver, então não sei o que pode ser.

Ainda não consegui fazer funcionar, pode ser por que to usando USB, ainda não sei. O jeito que tentei e que gera a mesma exceção foi justamente pra eliminar o arquivo intermediário.
To usando uns selos em um “rolinho” que parece papel higiênico, tem dois selos por linha, o rolo tem 8,4cm de largura, cada selo tem 3,9cm x 2,3cm.

Só pra completar o tópico, esse código funcionou escrevendo diretamente na porta LPT1. Se ela for USB deve estar ativado o pool de impressão nas configurações da impressora.

package impressaoZebraTLP2844;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

import javax.swing.JOptionPane;

public class EscreverLPT1{
	public static void main(String[] args) {
		escreve();
	}
	
	public static void escreve() {
		FileOutputStream os = null;
		String porta = "LPT1";
		try {
			os = new FileOutputStream(porta);
			PrintStream ps = new PrintStream(os);
			ps.println("N");
			ps.println("A212,10,1,2,1,1,N,\"Meu código EPL\"");
			ps.println("P1");
			ps.close();
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(null, "Não foi possível enviar os dados para impressão\nA porta \""+porta +"\" parece estar inacessível\n"+e.getMessage(), "Erro ao enviar os dados para a porta" , JOptionPane.ERROR_MESSAGE);
		}
	}
}