Tenho este trecho de código:
PrintService[] printService = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.AUTOSENSE, null);
PrintService impressoraPadrao = PrintServiceLookup.lookupDefaultPrintService();
DocFlavor docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
HashDocAttributeSet hashDocAttributeSet = new HashDocAttributeSet();
String texto = "teste teste teste teste teste teste teste teste";
InputStream stream = new ByteArrayInputStream(texto.getBytes());
Doc doc = new SimpleDoc(stream, docFlavor, hashDocAttributeSet);
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
PrintService printServico = ServiceUI.printDialog(null, 300, 200, printService, impressoraPadrao, docFlavor, printRequestAttributeSet);
if (printServico != null) {
DocPrintJob docPrintJob = printServico.createPrintJob();
try {
docPrintJob.print(doc, printRequestAttributeSet);
} catch (PrintException e) {
JOptionPane.showMessageDialog(null, "Erro: " + e.getMessage());
}
}
Este código não imprime. Quando mando a impressão para uma impressora, não acontece nada, mesma coisa de não ter enviado nada para a impressora.
Tentei instalar o PDFCreator e enviar a impressão nele, ai ele abre o PDFCreator normal e gera o arquivo, mas o arquivo é gerado em branco…
Esse é um dos codigos que tenho udasado para imprimir! esta funcional, e pode te ajudar
private static PrintService impressora;
public Impressao() {
detectaImpressoras();
}
// O metodo verifica se existe impressora conectada e a
// define como padrao.
public void detectaImpressoras() {
try {
DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintService[] ps = PrintServiceLookup.lookupPrintServices(df, null);
for (PrintService p: ps) {
System.out.println("Impressora encontrada: " + p.getName());
impressora = p;
/*if (p.getName().contains("Text") || p.getName().contains("Generic")) {
System.out.println("Impressora Selecionada: " + p.getName());
impressora = p;
break;
}*/
}
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized boolean imprime(String texto) {
// se nao existir impressora, entao avisa usuario
// senao imprime texto
if (impressora == null) {
String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
System.out.println(msg);
} else {
try {
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(texto.getBytes(StandardCharsets.UTF_8));
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
dpj.print(doc, null);
return true;
} catch (PrintException e) {
e.printStackTrace();
}
}
return false;
}