Galera preciso de uma coisa bem simples, imprimir o conteudo de uma String direto para impressora
package outrostests;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
/**
-
@author Usuario2
*/
public class Printers {private static PrintService impressora;
public Printers(){
detectaImpressoras();
imprime(“Oi sdfg sdfgsdfgsdfg\n rfgdfsg”);
}public static void main(String[] args) {
new Printers();
}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());
if (p.getName().contains(“Daruma”) && p.getName().contains(“Copia”)) {
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 {
System.out.println("Impressora: "+impressora);
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(texto.getBytes());
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;
}
}
Ok, agora vamos a explicação do código.
Primeiro, “configurar” a impressora.
if (p.getName().contains(“Daruma”) && p.getName().contains(“Copia”)) {
Nessa linha troque Daruma e Copia, por palavras chaves da sua impressora.
exemplo
p.getName().contains(“HP”) && p.getName().contains(“2000”)
se usar a classe, verá que esta variavel private static PrintService impressora;
será setada ao chamar o método detectaImpressoras();
agora é só imprimir qualquer string, passando por parametro imprime(“teste string”);
Sobre a impressora padrão, imagino que alterando no código não é bem o que você queria né? mas dá para adaptar, já fiz para pegar a impressora padrão, mas usando o ireport.
Consegui realizar a impressão já , porem preciso editar a fonte e o tamanho antes de imprimir como faço isso ?