Imprimir String na impressora

olá pessoal,
estou com um problema para imprimir em java.
eu tenho este código aqui que imprimir corretamente Bytes, mas quando o texto contém acentos ou caracteres especiais, eles são substituídos por outros caracteres malucos!

public class Impressao {

	private InputStream prin;
	private DocFlavor df;
	private Doc documento;
	private PrintService impressora;

	public void imprimi(String msg) throws Exception {
		
		prin = new ByteArrayInputStream(msg.getBytes());
		df = DocFlavor.INPUT_STREAM.AUTOSENSE;
		documento = new SimpleDoc(prin, df, null);		
		impressora = PrintServiceLookup.lookupDefaultPrintService(); // pega a impressora padrao
		PrintRequestAttributeSet printerAttributes = new HashPrintRequestAttributeSet();
		printerAttributes.add(new JobName("Impressao", null));
		printerAttributes.add(OrientationRequested.PORTRAIT);
		printerAttributes.add(MediaSizeName.ISO_A4); // informa o tipo de folha
		DocPrintJob printJob = impressora.createPrintJob();

		try {
			printJob.print(documento,
					(PrintRequestAttributeSet) printerAttributes);
			// tenta imprimir
		} catch (PrintException e) {
			JOptionPane.showMessageDialog(null,"Não foi possível realizar a impressão !!", "Erro",
					JOptionPane.ERROR_MESSAGE);
			e.printStackTrace();
		}
		prin.close();

	}

}

já tentei mudar o InputStream para um fluxo de caracter, mas parece que o método print de PrintJob só aceita fluxo de bytes.
alguma tem uma solução??
Obrigado!!

Da uma bizoiada aqui oh:


http://www.exampledepot.com/egs/javax.print/pkg.html

:wink: