Imprimir uma classe

Olá pessoal,

Tenho uma classe com dados e posições que eu quero imprimir, ou seja como faço pra acessar minha impressora e mandar imprimir os dado que tem na minha classe nas suas respectivas posições?

Se vc estiver no Windows e a sua impressora for a padrão em LPT1 basta vc pegar os dados em variáveis, montar um arquivo texto e enviar direto dando um comando print.

Segue um exemplo. Agora se for via porta serial me avise que também já fiz e posso te ajudar nisso.

package br.com.bwilson.imprimir;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JOptionPane;

/**
 *
 * @author petter
 */
public class ImprimirArgox {
 
    public String Lote = "0123456789";
    private String Stx = "\u0002";
    private String Cr = "\r";

    public void imprimir(String FornecedorCod, String FornecedorDesc,
                    String MaterialCod, String MaterialDesc, String DataVencimento,
                    String CodigoBarras) throws IOException, InterruptedException {
        
        Process child;
        String comandos;
        int i = 0;
        boolean bStatus = false;
        
        try{
        //Cria arquivo com conteudo a ser impresso e da ordem de impressão.
        File file = new File ("etiqueta.txt");
        FileWriter writer = new FileWriter(new File("etiqueta.txt"));
        PrintWriter saida = new PrintWriter(writer, true);
            saida.println(Stx + "m" + Cr); //Fixa unidade em milimetros
            saida.println(Stx + "0603" + Cr); //Comprimento da etiqueta
            saida.println(Stx + "L" + Cr); //Habilita o modo etiqueta
            saida.println("H12"); //Fixa temperatura para 12
            saida.println("D11" + Cr); //Tamanho padrão para pixel
            saida.println("191100305000005" + "Fornecedor: " +FornecedorCod + " - " + FornecedorDesc + Cr); //Texto formatado
            saida.println("191100204100005" + "Material: " + MaterialCod + " - " + MaterialDesc + Cr); //Texto formatado
            saida.println("191100203200005" + "Data de Vencimento: " + DataVencimento + Cr); //Texto formatado
            saida.println("191100202300005" + "Lote: " + Lote + Cr); //Texto formatado
            saida.println("1E0000000800005B" + CodigoBarras + Cr); //Código de barras padrão Code 128
            saida.println("E" + Cr); //Fim do modo de formatação e ordem de impressão
            saida.close();
            writer.close();
       
            if (bStatus == false){
                comandos = "print etiqueta.txt";
                child = Runtime.getRuntime().exec(comandos);
                Thread.sleep(500);
                bStatus = true;
            }
       
            if (bStatus == true){
                Thread.sleep(500);
                file.delete();
                Thread.sleep(500);
                bStatus = false;
            }
            
        }catch(IOException ioe){
            JOptionPane.showMessageDialog(null,
                    "Não foi possível enviar requisição para a impressora." + "/n" +
                    "Código: " + ioe.toString(),
                    "Aviso!",
                    JOptionPane.ERROR_MESSAGE);
        }catch(InterruptedException ie){
            JOptionPane.showMessageDialog(null,
                    "Erro na Thread MAIN. Contate a área de TI." + "/n" +
                    "Código: " + ie.toString(),
                    "Aviso!",
                    JOptionPane.ERROR_MESSAGE);
        }
    
    }
    
}