Imprimir Variavel String direto na impressora padrão

2 respostas
Felipe_Martins1

Galera preciso de uma coisa bem simples, imprimir o conteudo de uma String direto para impressora

2 Respostas

C
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 é  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 ? mas  para adaptar,  fiz para pegar a impressora padrão, mas usando o ireport.
Felipe_Martins1

Consegui realizar a impressão já , porem preciso editar a fonte e o tamanho antes de imprimir como faço isso ?

Criado 25 de julho de 2017
Ultima resposta 26 de jul. de 2017
Respostas 2
Participantes 2