Impressão direta modo texto

Segue classe para impressão direta em modo texto
Esta classe imprime direto para a porta de impressora LPT1 ou via Rede.
Nesta classe contem dois drives para controle de quebra de pagina, quebra de linha, compactação dos dos caracteres e etc.

Espero que este seja útil.

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Imprime direto para a porta ou compartilhamento de impressoara.
 * data 14/10/2009
 * @author Leandro Bernardo
 * @version 0.5
 * @since  
 *
 */
public class ImpressoraTexto {
    private String Porta = "";
    private FileOutputStream Impressora = null;

    /**
     * Cria a conexão com a impressora
     * @return true para conexão ativa
     *         false para conexão falha
     */
    private boolean open(){
        try {
           Impressora = new FileOutputStream(this.Porta);
           return true;
        } catch (FileNotFoundException ex) {
            Logger.getLogger(ImpressoraTexto.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }


    /**
     * Cria o objeto com imformando a porta ou mapeamento da impressora
     * @param Porta exemplo "LPT1" ou "\\maquina\nome_compartinhamento"
     *
     */
    public ImpressoraTexto(String Porta){
        this.Porta = Porta;
        this.open();
    }
    /**
     *
     * @return A porta onde está direcioando a impressora
     */
    public String getPorta() {
        return Porta;
    }

    public void setaddTexto(String Texto){
        try {
            byte[] bytes = Texto.getBytes();
            Impressora.write(bytes);
        } catch (IOException ex) {
            Logger.getLogger(ImpressoraTexto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Fecha a conexão com a impressora.
     */
    public void close(){
        try {
            Impressora.close();
        } catch (IOException ex) {
            Logger.getLogger(ImpressoraTexto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


  public static abstract class drivImp  {
        public  String NL;
        public  String cReset;
        public  String cEject;
        public  String c10cpi;
        public  String c12cpi;
        public  String c17cpi;
        public  String cIExpandido;
        public  String cFExpandido;
        public  String cINegrito;
        public  String cFNegrito;
        public  String cIItalico;
        public  String cFItalico;
    }

   static class  Epson extends drivImp{
        public Epson() {
            NL=""+(char)10+(char)13;
            cReset=""+(char)0;
            cEject=""+(char)12;
            c10cpi=""+(char)18;
            c12cpi=""+(char)27+(char)77;
            c17cpi=""+(char)27+(char)15;
            cIExpandido=""+(char)14;
            cFExpandido=""+(char)20;
            cINegrito=""+(char)27+(char)71;
            cFNegrito=""+(char)27+(char)72;
            cIItalico=""+(char)27+(char)52;
            cFItalico=""+(char)27+(char)53;
        }
    }

   static class HPDJ600 extends drivImp{
        public HPDJ600() {
            NL=""+(char)10+(char)13;
            cReset=""+(char)27+(char)69;
            cEject=""+(char)12;
            c10cpi=""+(char)27+(char)40+(char)115+(char)49+(char)48+(char)72;
            c12cpi=""+(char)27+(char)40+(char)115+(char)49+(char)50+(char)72;
            c17cpi=""+(char)27+(char)40+(char)115+(char)49+(char)54+(char)46+(char)54+(char)55+(char)72;
            cIExpandido=""+(char)27+(char)38+(char)100+(char)49+(char)68;
            cFExpandido=""+(char)27+(char)38+(char)100+(char)64;
            cINegrito=""+(char)27+(char)40+(char)115+(char)51+(char)66;
            cFNegrito=""+(char)27+(char)40+(char)115+(char)48+(char)66;
            cIItalico=""+(char)27+(char)40+(char)115+(char)49+(char)83;
            cFItalico=""+(char)27+(char)40+(char)115+(char)48+(char)83;
        }
    }

    public static void main(String args[]) {
        ImpressoraTexto Imp = new ImpressoraTexto("LPT1");
        drivImp         ImpDrv = new Epson();

        for (int i = 0; i < 20; i++) {
            Imp.setaddTexto("..................Linha  "+Integer.toString(i)+ImpDrv.NL);
        }
        Imp.setaddTexto(ImpDrv.cEject);
        Imp.close();
    }

}