Imprimir em impressora Térmica via servlet/jsp

Pessoal estou com um problema e não acho a solução: preciso imprimir um recibo em uma impresora térmica Diebold via servlet ou jsp e não estou conseguindo. Para voces entenderem melhor, criei uma aplicação web que roda no tomcat, e preciso imprimir este recibo por uma servlet ou jsp. Consegui criar uma classe que imprime certinho no eclipse, mas na hora de implementar no jsp ou servlet ele não executa.

Tentei fazer um relatório pelo ireport e deu certo só na execução do ireport, na hora de mostrar ele no browser em pdf, não consigo imprimir o recibo, na verdade, sai só letras e caracteres especiais na impressao.

Até em applet tentei executar, mas no browser tambem não funcionou.

Alguem tem uma dica ou solução?

Cara, precisei disso uns anos atrás e na época não dava…

Tipo, dá para passar aquela opção true ao printReport e mandar escolher a impressora de destino, mas não é o que vc quer.
Já deu uma olhada nessa opção criando uma impressora virtual(que gera o pdf):
http://www.devmedia.com.br/forum/imprimindo-diretamente-para-impressora-ireport/11035

Então mas essa impressora virtual será que dá certo a impressão na térmica, digo no formato de papel? por que como te falei no eclipse e no ireport executa da maneira que quero, mas no browser tá osso…

Se for como na zebra que também é térmica, basicamente eu pegava a referência para impressora e mandava o que eu queria.

PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService printService: printServices) {
    System.out.println(printService.getName());
}

Veja se a impressora que você quer usar está disponível com o código acima.

Sim, apareceu a impressora que desejo usar com seu código.

Esse código dá certo eu rodando no eclipse:

  import java.awt.Graphics;   
    import java.awt.PrintJob;   
    import java.awt.Toolkit;  
    import java.awt.Font;   
    import java.awt.Frame;    
import java.io.IOException; 

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import beans.BDConnection;


      
public class Impressora extends HttpServlet
{      
	 public void doGet (HttpServletRequest req , HttpServletResponse res)
     throws IOException, ServletException
     {
     
     }
       public void imprimir() {     
         
       // cria um frame temporário, onde será  desenhado  o texto a ser impresso     
       Frame f = new Frame("Frame temporário");     
       f.pack();
             
       //f.setBounds(850, 890, 890, 990);
       //f.setMaximizedBounds(null);
       //f.setMaximumSize(null);
         
       // pega o Toolkit do Frame     
       Toolkit tk = f.getToolkit();      
       
      
       // Pega os serviços de impressão existentes no computador,     
       // para que seja escolhida uma impressora.    
       // Também pode ser uma impressora de rede   
       PrintJob pj = tk.getPrintJob(f,  "recibo" , null);  
      
       // Aqui se inicia a impressão   
       if (pj != null) {    
          Graphics g = pj.getGraphics(); 
          //g.setFont(new Font("Arial",Font.PLAIN,10));
          
          g.drawString( "-----------------------------------------------" , 05, 10);
          g.drawString( "empresa" , 75, 20);  
          g.drawString( "endreco" , 87, 31); 
          g.drawString( "cidade - sp" , 55, 42);
          g.drawString( "-----------------------------------------------" , 05, 53);
          g.drawString( "Controle de Viagens de Vinhaça e Outros" , 15, 64);
          g.drawString( "Data Emissao:" , 10, 76);
          g.drawString( "-----------------------------------------------" , 05, 87); 
          g.drawString( "Viagem No:" , 10, 98);  
          g.drawString( "Hr.Entrada:" + "   " + "Hr.Saida:" , 15, 109);
          g.drawString( "Motorista:" , 10, 120);  
          g.drawString( "Caminhao.:" , 10, 131);    
          g.drawString( "No.Frota.:" , 10, 142); 
          g.drawString( "Placa....:" , 10, 153); 
          g.drawString( "Propriet.:" , 10, 164);
          g.drawString( "Destino..:" , 10, 186);
          g.drawString( "Residuo..:" , 10, 197);
          g.drawString( "Julieta..: SIM" , 10, 208);
          g.drawString( "" , 15, 219);
          //g.drawString( "------------------------------------------------" , 05, 230); 
          g.drawString( "Desenvolvido por ..., 45, 231);
          
          g.drawLine(05,390,390,390);
          //g.setFont(new Font("Arial",Font.PLAIN,10));             
          //g.setFont(new Font("Courier New",Font.BOLD,8));  
   
          //g.drawString( "página 1" , 500, 810);    
      
          // libera os recursos gráficos    
          g.dispose();      
          // encerra a impressão    
          pj.end();   
       }    
      
       // desfaz o frame temporário   
       f.dispose();   
       } 
       

          
    }  

Contextualize melhor a questão.
1 - A impressora térmica em questão é uma ECF (emissora de cupom fiscal)?
2 - O que pretende imprimir é um cupom fiscal?

Não é uma impressora térmica ECF;
E o que pretendo imprimir é apenas um recibo sem valoor fiscal pela impressora térmica, uma Diebold Procomp IM433TD.
Como já falei nas mensagens acima, já consegui imprimir nela tudo certo, apenas não consegui realizar a impressão pela web, será que tenho assinar uma applet ou alguma configuração na servlet para imprimir via browser?

fico no aguardo