Impressão Java

Gostaria que fosse escrito sobre Impressão em Java.
Converssei com vários desenvolvedores e o ponto fundamental para adotar a Linguagem Java para desenvolvimento de sistemas corporativos e esse.
Por exemplo trabalho em Uma empresa de transportes de Passageiros Interestadual, a maior dificuldade que estou encontrando para passar minhas aplicações para Java é Imprimir numa Impressora Fiscal utilizando a DLL do fabricante.

Também encontro muita dificuldade para trabalhar com impressão em Java. Esta pergunta já virou moda e sempre quando alguém vai começar a programar, uma das primeiras perguntas que me fazem é qual a API de impressão.
Já procurei no fórum mais há pouquíssimas perguntas e as respostas não são consistentes.
O pessoal do GUJ que sempre se mostrou competente nos tutoriais, poderiam fazer um abordando impressão desde o nível mais básico até mais avançado no mesmo texto. Fica a sugestão…

Impressão em java é muiiiiittoooo complicado, pelo simples fato de ninguém saber ao certo como imprimir.

http://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.javaworld.com/javaworld/jw-10-2000/jw-1020-print.html&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3Dhttp://www.javaworld.com/javaworld/jw-10-2000/jw-1020-print.html%26hl%3Dpt-BR%26client%3Dfirefox-a%26channel%3Ds%26rls%3Dorg.mozilla:pt-BR:official%26hs%3D9Nc%26sa%3DG

Tá ai o link brow, espero que ajude.

Tá ai um exemplo brow, espero que ajude:

import java.awt.*;
import java.text.DecimalFormat;

class impressao{

private PrintJob pj;   
private Toolkit tk;   
private Frame fr;   
private Graphics[] g;   
private DecimalFormat dig = new DecimalFormat("00");   
   
public impressao(){   
       
    fr = new Frame("Impressão de identicação");   
    fr.pack();   
       
    g = new Graphics[50];   
    tk = fr.getToolkit();   
    pj = tk.getPrintJob(fr, "print1", null);   
}   
   
public void imprimi(String[] linhas, int cont_linhas, int folha, String cabe){   
       
    int i = folha - 1;   
       
    if (pj!=null) {   
           
           
        g[i] = pj.getGraphics();   
           
        g[i].setFont(new Font("Arial",Font.BOLD, 18));   
        g[i].drawString( cabe, 35, 75);   
        g[i].setFont(new Font("Arial",Font.PLAIN, 12));   
           
           
        g[i].setColor(Color.black);   
        g[i].setFont(new Font("Courier",Font.PLAIN, 10));   
           
        for(int j=0;j<cont_linhas;j++){   
               
            g[i].drawString( linhas[ j ] , 35, ( 110 + (j * 15) ) );   
        }   
           
        g[i].setFont(new Font("Arial",Font.BOLD, 10));   
        g[i].drawString("Folha: " + dig.format(folha) + "                          Data: " + lc.getData() + "                           Hora: " + lc.getHora(), 79,  780 );   
           
        g[i].dispose();   
    }   
}   
   
public void finaliza(){   
       
    pj.end();   
}   

}

Já tive um problema parecido, acabei buscando soluções e não encontrei nada… acabei fazendo do pior jeito… gerando um txt com os alinhamentos e copiando para a porta de impressão…

mais, não sei se este artigo ajuda, porem eh uma solução:http://www.objecttraining.com.br/object_training/artigo/17?controller=object_training&action=artigo&id=17&paginator_page=0&

Com o JRuby no estado atual, acho que vale a pena testar…

abraços