Estou montando um visualizador de relatórios para a empresa, na qual deve visualizar Streams de arquivos de texto (.txt) de arquivos de modo gráfico (.pdf).
O problema está na hora de imprimir esses aquivos. Estou utilizando o pacote javax.print e quando mando InputStream não tenho problemas, mas em alguns casos o relatório está apenas em memória, foi gerado, mas ainda não salvo.
Como operações de I/O em disco são demoradas e atrasam nossa vida, estava tentando achar alguma forma de imprimir esse relatório sem precisar salvá-lo temporariamente, apenas para obter um InputStream.
Achei então constantes de configurações no DocFlavor para String, mas ao tentar utilizá-las acontece sempre a exception “Invalid flavor”.
A seguir o código utilizado:
try {
PrinterJob pjob = PrinterJob.getPrinterJob();
pjob.setJobName("Imprimir");
if (pjob.printDialog() == false)
return;
PrintService ps = pjob.getPrintService();
DocPrintJob job = ps.createPrintJob();
DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
String s = "teste de impressao com string";
Doc doc = new SimpleDoc(s, flavor, null);
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
pras.add(MediaSizeName.ISO_A4);
pras.add(new Copies(pjob.getCopies()));
job.print(doc, pras);
catch (PrintException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
e.printStackTrace();
}
o erro acontece tanto se utilizado:
DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
quando se utiliza:
DocFlavor flavor = DocFlavor.STRING.TEXT_HTML;
Alguém com mais conhecimento poderia me ajudar?
Ou talvez tenham alguma idéia melhor de como montar a impressão, talvez com outras bibliotecas.
Desde já agraço à todos.