[RESOLVIDO]Impressora Termica imprime caracteres

Estou utilizando uma impressora TERMICA Diebold procomp IM433TD mas quando vou imprimir uma string de caracteres atravez desse método

[code]public static void testeMatric()
{

    try 
    {
                
        StringBuffer destino = new StringBuffer();
        
        destino.append("TESTE");       
        
        
        String caminhoMatric = "LPT1";   
       
        //Adiciona caminho da impressora
        FileOutputStream outputFile;            
        outputFile = new FileOutputStream(caminhoMatric);
        PrintWriter out = new PrintWriter(outputFile);                            
        
        out.println("aa");
        out.flush();                         
        try 
        {
            outputFile.close();
        } catch (IOException ex) 
        {
           
        }
             out.close();   
    } catch (FileNotFoundException ex) 
    {
        
    }    
    
    

}[/code]

ELA SEMPRE! imprime [color=brown](RREMOTE1STSM [/color] e depois imprime o que eu mando
por exemplo:

com o método acima ela imprimiria:
[color=orange](RREMOTE1STSMTESTE [/color]

o que pode ser?
Obrigado a todos

Opa blz, então eu não tenho o código aqui, mas qdo chegar em casa posto o codigo que utlizei aqui pra vc.

Muito Obrigado amigo
Você me salvou :stuck_out_tongue:

Bom primeiro uso um método que identifica as impressoras para que o usuario possa selecionar em um comboBox

[code]public void detectarImpressoras() {

    try {
        boxImpressoras.removeAllItems();
        DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        ps = PrintServiceLookup.lookupPrintServices(df, null);
        for (PrintService p: ps) {
            boxImpressoras.addItem(p.getName());
        }

    } catch (Exception e) {

        e.printStackTrace();

    }
}[/code]

em um outro método gero um string com o conteudo a ser impresso

[code]
private String gerarNotaTermica(){
String nota = “”;
nota += “----------------------------------------”+System.getProperty (“line.separator”);
nota += “TOTAL R$152,69”
+ “Loja 1”
+ “Operador: OPERADOR”
+ “EMPRESA”
+ “----------------------------------------”+System.getProperty (“line.separator”);

    return nota;
}[/code]

E por fim, mando imprimir utilizando o método abaixo

private void imprimir(){
        for (int i=0; i<Integer.parseInt(jsCopias.getValue().toString()); i++){
            // Conteúdo a ser impresso
            InputStream stream = new ByteArrayInputStream((gerarNotaTermica() + "\u039A").getBytes());

            impressora = ps[boxImpressoras.getSelectedIndex()];
            DocPrintJob dpj = impressora.createPrintJob();

            // Definição de atributos do conteúdo a ser impresso:
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

            // Cria um Doc para impressão a partir do arquivo exemplo.txt
            Doc documentoTexto = new SimpleDoc(stream, flavor, null);

            try {
                // 	Imprime o documento sem exibir uma tela de dialogo
                    dpj.print(documentoTexto, null);
            } catch (PrintException ex) {
                Logger.getLogger(dlgVenda.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
}

[quote=Vinny]

Bom primeiro uso um método que identifica as impressoras para que o usuario possa selecionar em um comboBox

[code]public void detectarImpressoras() {

    try {
        boxImpressoras.removeAllItems();
        DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        ps = PrintServiceLookup.lookupPrintServices(df, null);
        for (PrintService p: ps) {
            boxImpressoras.addItem(p.getName());
        }

    } catch (Exception e) {

        e.printStackTrace();

    }
}[/code]

em um outro método gero um string com o conteudo a ser impresso

[code]
private String gerarNotaTermica(){
String nota = “”;
nota += “----------------------------------------”+System.getProperty (“line.separator”);
nota += “TOTAL R$152,69”
+ “Loja 1”
+ “Operador: OPERADOR”
+ “EMPRESA”
+ “----------------------------------------”+System.getProperty (“line.separator”);

    return nota;
}[/code]

E por fim, mando imprimir utilizando o método abaixo

[code]
private void imprimir(){
for (int i=0; i<Integer.parseInt(jsCopias.getValue().toString()); i++){
// Conteúdo a ser impresso
InputStream stream = new ByteArrayInputStream((gerarNotaTermica() + “\u039A”).getBytes());

        impressora = ps[boxImpressoras.getSelectedIndex()];
        DocPrintJob dpj = impressora.createPrintJob();

        // Definição de atributos do conteúdo a ser impresso:
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

        // Cria um Doc para impressão a partir do arquivo exemplo.txt
        Doc documentoTexto = new SimpleDoc(stream, flavor, null);

        try {
            // 	Imprime o documento sem exibir uma tela de dialogo
                dpj.print(documentoTexto, null);
        } catch (PrintException ex) {
            Logger.getLogger(dlgVenda.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
[/code][/quote]

O problema é que não posso ter ela instalada, preciria enviar direto na porta LPT1

ola
mesmo sendo pela porta LPT1 ou COM1, voce deve instalar isso sendo no WINDOWS > Generic > Texto.
isso serve para o SO ententer o codigo ASCII vai usar determinadas DLL.

a instalação vc aponta para a porta desejada.
ja tive este problema no XP.

[quote=Lindberg]ola
mesmo sendo pela porta LPT1 ou COM1, voce deve instalar isso sendo no WINDOWS > Generic > Texto.
isso serve para o SO ententer o codigo ASCII vai usar determinadas DLL.

a instalação vc aponta para a porta desejada.
ja tive este problema no XP.

[/quote]

Instalei generic text only e funcionou …!!!
Muito obrigado aos dois

é isso, vamos em frente …

Olá Vinny, se puder me tirar uma dúvida quanto a esse trecho?

Integer.parseInt(jsCopias.getValue().toString()

ele se refere a que?
obrigado!

[quote=MARKETRAW]Olá Vinny, se puder me tirar uma dúvida quanto a esse trecho?

Integer.parseInt(jsCopias.getValue().toString()

ele se refere a que?
obrigado!

[/quote]

Nessa parte do código eu peguei o valor de um campo do meu Dialog que representa o números de cópias que eu quero imprimir e o converti em Integer.

Integer.parseInt() = Converter uma String em Integeiro;

jsCopias = É o nome do meu campo com o numero de copias;

getValue() = getValue pega o valor do meu campo que no caso era JSpinner, o getValue retorna um objeto;

toString() = Transforma o objeto retornado pelo getValue() em String;

Oopa, agoora intendí bacana!! :stuck_out_tongue:
Brigadão

[quote=Vinny]

Bom primeiro uso um método que identifica as impressoras para que o usuario possa selecionar em um comboBox

[code]public void detectarImpressoras() {

    try {
        boxImpressoras.removeAllItems();
        DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
        ps = PrintServiceLookup.lookupPrintServices(df, null);
        for (PrintService p: ps) {
            boxImpressoras.addItem(p.getName());
        }

    } catch (Exception e) {

        e.printStackTrace();

    }
}[/code]

em um outro método gero um string com o conteudo a ser impresso

[code]
private String gerarNotaTermica(){
String nota = “”;
nota += “----------------------------------------”+System.getProperty (“line.separator”);
nota += “TOTAL R$152,69”
+ “Loja 1”
+ “Operador: OPERADOR”
+ “EMPRESA”
+ “----------------------------------------”+System.getProperty (“line.separator”);

    return nota;
}[/code]

E por fim, mando imprimir utilizando o método abaixo

[code]
private void imprimir(){
for (int i=0; i<Integer.parseInt(jsCopias.getValue().toString()); i++){
// Conteúdo a ser impresso
InputStream stream = new ByteArrayInputStream((gerarNotaTermica() + “\u039A”).getBytes());

        impressora = ps[boxImpressoras.getSelectedIndex()];
        DocPrintJob dpj = impressora.createPrintJob();

        // Definição de atributos do conteúdo a ser impresso:
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

        // Cria um Doc para impressão a partir do arquivo exemplo.txt
        Doc documentoTexto = new SimpleDoc(stream, flavor, null);

        try {
            // 	Imprime o documento sem exibir uma tela de dialogo
                dpj.print(documentoTexto, null);
        } catch (PrintException ex) {
            Logger.getLogger(dlgVenda.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}
[/code][/quote]

Olá Vinny.
Teria como você me explicar mais ou menos referente ao método que identifica as impressoras com um ComboBox?
Teria como identificar a impressora automaticamente?
Obrigado

Pessoal to com uma impressora diebold IM433TD, igual do Tioola. Usei a classe dele e não deu certo. Nem imprimiu.

Bom depois tentei usar a classe do Vinny, mas não deu certo.

Oque pode ser? será q ue tá faltando algum jar ou configuração?

Cara para agente te ajudar você precisar dar mais detalhes do que esta acontecendo.

Esta dando alguma mensagem de erro? Se estiver posta aqui o erro.

Você esta conseguindo localizar a impressora? Mesmo sendo em outros programas como o Word.

Caso a impressora não esteja instalada no Sistema faça o que o nosso amigo Lindberg disse, isso pode funcionar para você assim como funcionou para o tioola.

Abraço

Consegui imprimir a classe executando pelo eclipse 3.1.
Tem alguma classe que eu consiga imprimir nesta impressora por uma servlet?

Fico no aguardo

Olá, desculpe re-abrir o tópico, tenho uma impressora térmica não-fiscal EngWorks conectada usando um adaptador USB-Paralelo que foi instalada com o driver Genérico/Somente Texto no Windows 7 x64 e a bichina não imprime de jeito maneiro.
Usei o código aqui apresentado em um aplicativo Swing JDK7 no Netbeans e roda sem erros porém o documento fica na fila de impressão e não sai de lá a não ser que eu limpe a fila ou desconecte o cabo que vai atrás da impressora.
A impressora foi testada na loja e funcionou perfeitamente.
Vocês poderiam me ajudar?
Obrigado