Problemas Com Impressão de Etiquetas

Pessoal seguinte.
Tenho uma Metrologic MI 5300(Impressora de Código de Barras, Etiquetas).
E o problema é o seguinte:
Eu crio uma string com todos os dados para a configuração da impressora, onde coloco a temperatura da impressão, posição, caracteres de inicio de impressão, etc.
Após isto eu quero mandar estes dados para a impressão nesta impressora. quando eu faço isto através do comando:

/*Runtime rt = Runtime.getRuntime();
  rt.exec("cmd /c copy "+file.getPath() +" prn:");*/

Funciona blz, e a impressão e realizada automaticamente, mas quando eu utilizo o PrintJob para possibilitar que seja escolhida a impressora ele não funciona…

Alguém já passou por algo parecido ? Desde já obrigado

Ah outra coisa, se eu criar um arquivo no pronpt do dos utilizando o edit com a string e mandar imprimir ele manda corretamente, mas se eu tentar no bloco de notas ou no word não imprime também… Parece que o windows coloca tipo um cabecalho com informações o que faz com que a impressão não consiga identificar as informações recebidas.

Olá Edinei!

Então, acho que já passei por esses mesmos problemas…bom, existem vários caminhos para que isso se resolva, um pouco complicados, mas valem a pena:

1- Vc tem a disposição algum software de criação de etiquetas (label matrix, bar one, etc, etc)? Se sim, vc pode gerar a etiqueta nesse software e gerar o código fonte para a linguagem da impressora. Normalmente esses softwares podem gerar código fonte para praticamente todas as impressoras térmicas ou de termo-transferencia. Em seguida, vc envia esse código via porta paralela usando javax.comm, RXTX ou parport, ou (se vc quiser deixar a brincadeira mais divertida) combinar as bibliotecas.

2 - Vc pode criar a etiqueta em um software java (usando JPanel e Graphics) feito por vc mesmo e em seguida usar a API de impressão de java para imprimir, mas pra isso vc PRECISA do driver da impressora instalado no computador, ok? Esse caminho é o mais fácil, caso vc não tenha um software de geração de etiquetas.

Espero ter ajudado. Qualquer coisa dá um reply, ok?
E boa sorte!

[quote=Rodrigo Vieira Pinto]Olá Edinei!

Então, acho que já passei por esses mesmos problemas…bom, existem vários caminhos para que isso se resolva, um pouco complicados, mas valem a pena:

1- Vc tem a disposição algum software de criação de etiquetas (label matrix, bar one, etc, etc)? Se sim, vc pode gerar a etiqueta nesse software e gerar o código fonte para a linguagem da impressora. Normalmente esses softwares podem gerar código fonte para praticamente todas as impressoras térmicas ou de termo-transferencia. Em seguida, vc envia esse código via porta paralela usando javax.comm, RXTX ou parport, ou (se vc quiser deixar a brincadeira mais divertida) combinar as bibliotecas.

2 - Vc pode criar a etiqueta em um software java (usando JPanel e Graphics) feito por vc mesmo e em seguida usar a API de impressão de java para imprimir, mas pra isso vc PRECISA do driver da impressora instalado no computador, ok? Esse caminho é o mais fácil, caso vc não tenha um software de geração de etiquetas.

Espero ter ajudado. Qualquer coisa dá um reply, ok?
E boa sorte![/quote]

Cara, tipo assim quando eu crio na minha aplicação java um arquivo com dados para impressão e mando do java direto para a impressora ele imprime certo até os códigos de barras o problema é quando em java eu chamo o PrintJob que me mostra a caixa com as opções de impressora. Neste momento ele não imprimi e até parece que ele não se conectou a impressora.
E dai alguma coisa a dizer ?

Cara, é como eu disse: para usar a API de impressão de Java, vc deve instalar o drive da impressora no computador, ok?

Agora, imprimindo dessa forma, não é garantido que vai funcionar.

Mas se vc quer mesmo imprimir enviando um arquivo para a impressora, sugiro que vc simplesmente crie um fluxo de saída de dados (como se vc fosse copiar um arquivo de uma pasta para outra) aí vc aponta esse fluxo de saída para a porta paralela. é meio que uma gambiarra, mas vc pode testar.

[quote=Rodrigo Vieira Pinto]Cara, é como eu disse: para usar a API de impressão de Java, vc deve instalar o drive da impressora no computador, ok?

Agora, imprimindo dessa forma, não é garantido que vai funcionar.

Mas se vc quer mesmo imprimir enviando um arquivo para a impressora, sugiro que vc simplesmente crie um fluxo de saída de dados (como se vc fosse copiar um arquivo de uma pasta para outra) aí vc aponta esse fluxo de saída para a porta paralela. é meio que uma gambiarra, mas vc pode testar.[/quote]

E desta forma ta funcionando, só que dai eu teria que ter definida como padrão esta impressora na máquina do cliente. E eu não queria fazer isto…

Então cara, tente usar a dica 1 que te passei.

Esse assunto é complicado mesmo, leia com atenção o que falei pra vc fazer que é garantido que funciona, ok?

ae galera blz???

entaum to montando um relatório p/ formulário contínuo em EPSON e gostaria de saber se alguém sabe algo a respeito…

eu já tentei usar o IREPORTS + JASPERREPORTS e deu aquele velho problema de imprimir a primeira certa e o resto errado.

Desisti do ireports por causa do curto prazo, agora tô fazendo na mão, o problema é que estou tendo uma dificuldade enorme em acertar a formatação!!!

estou passando como parâmetro um ARRAYLIST mas estou tendo mta dificuldae p/ formatar. Algu´me pode me ajudar???

valew desde já!

ae:::


/*
 * ImpEtiquetas.java
 *
 * Created on 21 de Fevereiro de 2008, 08:09
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package relatorios;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;

/**
 *
 * @author Usuario
 */
public class ImpEtiquetas extends JPanel implements Printable {
    
    private String[][] dados;
    private List al;
    
    
    
    /** Creates a new instance of ImpEtiquetas */
    public ImpEtiquetas(List a) {
        
        al = a;
        
        //String[] dados;
        
        for(int i = 0; i < al.size(); i++)
          System.out.println(al.get(i));           
        
        
    } //
          
    
    public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
        
        if (pi >= 1)
            return Printable.NO_SUCH_PAGE;
        
        Graphics2D g2d = (Graphics2D) g;
        g2d.translate(pf.getImageableX(), pf.getImageableY());
        g2d.setColor(Color.GREEN);
        Font fonte = new Font("Monospaced", Font.PLAIN, 12);
        g2d.setFont(fonte);
        
        int y = 5;
        int x = 15;
        
        for(int i = 0; i < al.size(); i+=2) {
            
            g2d.drawString("Pedido1: " + al.get(i).toString(), x, y);
            if ((i + 3) < al.size()) g2d.drawString("Pedido: " + al.get(i+3).toString(), x + 275, y);
            
            y+= 10;
            
            if ((i + 1) < al.size()) g2d.drawString("Referência1: " + al.get(i+1).toString(), x, y);
            if ((i + 4) < al.size()) g2d.drawString("Referência: " + al.get(i+4).toString(), x + 275, y);

            y+= 10;
            
            if ((i + 2) < al.size()) g2d.drawString("Cor1: " + al.get(i+2).toString(), x, y);
            if ((i + 6) < al.size()) g2d.drawString("Cor: " + al.get(i+6).toString(), x + 275, y);
            
            //y+= 49;
            y = 5;
            
        } //
        
        paint(g2d);
        
        return Printable.PAGE_EXISTS;
        
        
    } //
    
    
    
}