Criar Etiqueta para impressora ZEBRA

Olá pessoal

preciso criar um sistema que geri etiquetas contendo nome produto, código de barras e datas alguém conheci alguma Api, ou como posso fazer isso?

muito obrigado…

Primeiro, estude ZPL (se não me engano é este o nome da linguagem das impressoras zebra). O fabricante da impressora em questão deve fornecer detalhes do que e como funciona.

Bom, eu criei o relatorio, na unha, mas como meu espaço era limitado… para gerar os cod de barras eu usei fonte code 128… consegui fazer tudo o que queria… se precisar de alguma coisa… Abraços!

Eu já desenvolvi uma vez utilizando Delphi… Na época na empresa tínhamos uma impressora e o manual… Usei o manual e foi bem tranquilo, porém é um pouco trabalhoso, não sei como está hoje, talvez o próprio fabricantes disponibilize um plugin ou algo assim para efetuar a comunicação com essas linguagens mais novas… Vale a pena entrar em contato com eles…

Já mandei via private, segua site de como gerar code de barra

http://grandzebu.net/informatique/codbar-en/code128.htm

bata dar uma lida que irá resolver o problema de todos =)

Olá a todos,

para imprimir na impressora zebra quebrei um pouco a cabeça … mas consegui resolver o problema … vou postar a classe que usei para resolver a impressão de etiquetas em uma fita de 3 colunas de etiquetas…

[code]
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.swing.JOptionPane;

public class ImprimeEtiquetaZebra {

private Empresa empresaSelecionada;

private Produto produtoSelecionado;
private Marca marcaSelecionada;
private ArrayList etiqueta = new ArrayList();

private String tipoImpressora;

public String imprimeEtiquetaZebra(Produto produto, Marca marca, Empresa empresa, int qtdeEtiquetas, int qtdeColunas, String imp){
    
    String retorno = "";
    
    //recebe o produto enviado por parametro
    produtoSelecionado = produto;
    
    //recebe a marca enviada por parametro
    marcaSelecionada = marca;
    
    //recebe a empresa enviada por parametro
    empresaSelecionada = empresa;
    
    tipoImpressora = imp;
    
    //escreve o nome do arquivo
    String nomeArquivo = "Etiquetas"+File.separator+"ETIQUETA - "+produtoSelecionado.getCodBarra()+".txt";
    
    //cria o arquivo
    File diretorio = new File("Etiquetas");
    diretorio.mkdir();
    File arquivoEtiqueta = new File(nomeArquivo);
    
    
    //preenche a etiqueta com os dados do produto
    preencheEtiqueta(qtdeEtiquetas, qtdeColunas);
    
    //escreve o conteúdo do arquivo
    try {
        
        BufferedWriter bw = new BufferedWriter(new FileWriter(arquivoEtiqueta));
        
        for (int i = 0; i < etiqueta.size(); i++){
            bw.write(etiqueta.get(i).toString());
            bw.newLine();
        }
        
        bw.close();
        
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    //instancia um stream para carregamento do arquivo
    FileInputStream dadosEtiqueta = null;

    try {

// for (int i = 0; i < qtdeLinha; i++) {

            //carrega os dados do arquivo de etiqueta
            dadosEtiqueta = new FileInputStream(arquivoEtiqueta);
        
            //determina o tipo a ser impresso (txt)
            DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 
            SimpleDoc documentoTexto = new SimpleDoc(dadosEtiqueta, docFlavor, null); 

            //verifica quais impressoras sao compativeis com txt
            PrintService impressora = PrintServiceLookup.lookupDefaultPrintService(); 

            //cria a tarefa de impressao
            DocPrintJob printJob = impressora.createPrintJob(); 

            //tenta imprimir
            printJob.print(documentoTexto, null); //(PrintRequestAttributeSet)printerAttributes);

            //fecha o arquivo
            dadosEtiqueta.close();

// }

    //se nao achar o arquivo    
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    //se nao conseguir imprimir
    } catch(PrintException e){ 
        JOptionPane.showMessageDialog(null, "Não foi possível realizar a impressão !!", "Erro", JOptionPane.ERROR_MESSAGE); 
    //se nao conseguir fechar
    } catch (IOException ex) {
        ex.printStackTrace();
    }

    return retorno;
    
}

private void preencheEtiqueta(int qtdeEtiquetas, int qtdeColunas){
    
    if (qtdeColunas == 3) {
 
        String descricao = Validacao.removeAcentuacao(produtoSelecionado.getDescricao()).toUpperCase();
        String referencia = Validacao.removeAcentuacao(produtoSelecionado.getReferencia()).toUpperCase();
        String codigo = Validacao.removeAcentuacao(produtoSelecionado.getCodLocalizacao()).toUpperCase();
        String precoVista = Validacao.colocaEspacoAEsquerda(8, String.format("%,.2f", produtoSelecionado.getValorMinimo()));
        String precoPrazo = Validacao.colocaEspacoAEsquerda(16, String.format("%,.2f", produtoSelecionado.getValorVenda()));
        String codBarras = produtoSelecionado.getCodBarra();
        String marca = Validacao.removeAcentuacao(marcaSelecionada.getNome()).toUpperCase();
        
        int qtdeLinha = 0;
        if (qtdeEtiquetas % 3 == 0) {
            qtdeLinha = qtdeEtiquetas / 3;
        } else {
            qtdeLinha = (qtdeEtiquetas / 3) + 1;
        }   
        
        //cabeçalho e configuração da etiqueta
        
        //CONFIGURAÇÃO ETIQUETA IMPRESSORA ELTRON TLP 2742
        
        if("TLP2742".equals(tipoImpressora)) {
        
            etiqueta.add("I8,A,001");
            etiqueta.add("");
            etiqueta.add("");
            etiqueta.add("Q240,024");
            etiqueta.add("q900");
            etiqueta.add("rN");
            etiqueta.add("S4");
            etiqueta.add("D7");
            etiqueta.add("ZT");
            etiqueta.add("JF");
            etiqueta.add("OD");
            etiqueta.add("R0,0");
            etiqueta.add("f100");
            etiqueta.add("N");

            etiqueta.add("A010,10,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A010,30,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A010,50,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A010,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A010,110,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B9,135,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A235,170,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");

            etiqueta.add("A295,10,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A295,30,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A295,50,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A295,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A295,110,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B305,135,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A525,170,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");

            etiqueta.add("A580,10,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A580,30,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A580,50,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A580,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A580,110,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B590,135,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A810,170,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");

        } else if ("TLP2844".equals(tipoImpressora)) {
            
            etiqueta.add("I8,A,001");
            etiqueta.add("");
            etiqueta.add("");
            etiqueta.add("Q240,024");
            etiqueta.add("q448");
            etiqueta.add("rN");
            etiqueta.add("S4");
            etiqueta.add("D7");
            etiqueta.add("ZT");
            etiqueta.add("JF");
            etiqueta.add("OD");
            etiqueta.add("R0,0");
            etiqueta.add("f100");
            etiqueta.add("N");

            etiqueta.add("A15,5,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A15,25,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A15,45,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A25,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A25,105,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B25,140,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A250,190,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");

            etiqueta.add("A300,5,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A300,25,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A300,45,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A310,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A310,105,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B310,140,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A535,190,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");

            etiqueta.add("A585,5,0,2,1,1,N,\""+(descricao.length() < 18 ? descricao : descricao.substring(0, 17))+"\"");
            etiqueta.add("A585,25,0,2,1,1,N,\"REF:"+(referencia.length() < 14 ? referencia : referencia.substring(0, 13))+"\"");
            etiqueta.add("A585,45,0,2,1,1,N,\"COD:"+(codigo.length() < 14 ? codigo : codigo.substring(0, 13))+"\"");
            etiqueta.add("A595,75,0,1,2,2,N,\"Av:"+precoVista+"\"");
            etiqueta.add("A595,105,0,1,1,2,N,\"Prazo:"+precoPrazo+"\"");
            etiqueta.add("B595,140,0,E30,2,2,55,B,\""+codBarras+"\"");
            etiqueta.add("A820,190,3,1,1,1,N,\""+(marca.length() < 20 ? marca : marca.substring(0, 19))+"\"");
            
        }
        
        etiqueta.add("P"+String.valueOf(qtdeLinha));
        
    }
    
}

}[/code]

a lógica é vc criar um arquivo de texto simples com os dados que vc quer imprimir e com os dados de configuração da etiqueta …
perceba que para cada coisa escrita na etiqueta tem que ser colocado os comandos de configuração para a impressora…

depois é só enviar o arquivo txt que foi criado para ela …
no meu caso a impressora está instalada como uma impressora genérica somente de texto… isso já resolveu o problema

espero que este exemplo ajude…

2 curtidas