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!!