Imprimir em impressora normal direto do java

11 respostas
Q

Bom galera, queria saber se era possivel imprimir um determinado texto
direto do java em impressoras comuns.
tipo, escolho o texto a ser imprimido no meu programa e clicko no botao de imprimir.
Se alguem poder me ajudar. a impressora nao é fiscal, é dessas comuns mesmo
uma HP 2050.
Valeu!

11 Respostas

L

vc pode gerar um documento em PDF daí escolher se quer imprimir ou armazenar no seu PC…

Q

mas como fazer isso em código? aindo sou muito novo em java?
nao conheço as classes que fazem isso?

A

Ó carinha, googlei “java printing api” e encontrei isto:

http://docs.oracle.com/javase/tutorial/2d/printing/index.html

Q

muito bom aqueles tutoriais
nao consegui entender muito
mais vou dar uma estudada e
depois vou vou tentar rodar a classe.
Se alguem tiver mais uma idéia…
Valeu!

R

Vou te dar uma aplicação para abrir um documento em PDF…

no Servlet, você coloca assim:

package control;   
  
import java.io.IOException;   
import java.io.OutputStream;   
  
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
import net.sf.jasperreports.engine.JRResultSetDataSource;   
import net.sf.jasperreports.engine.JasperCompileManager;   
import net.sf.jasperreports.engine.JasperExportManager;   
import net.sf.jasperreports.engine.JasperFillManager;   
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.engine.JasperReport;   
import net.sf.jasperreports.engine.design.JasperDesign;   
import net.sf.jasperreports.engine.xml.JRXmlLoader;   
  
import persistence.ProdutoDao;   
  
public class Relatorio extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
  
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
    protected void doPost(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
  
    protected void execute(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
           
        ProdutoDao d = new ProdutoDao();   
           
        try{   
            d.open();   
               
    //JasperReports -> iReport   
           
    //Passo o ResultSet do JDBC para o Relatorio   
        JRResultSetDataSource ds = new JRResultSetDataSource(d.findAll());   
               
    //Arquivo do relatório   
        JasperDesign jd = JRXmlLoader.load("c:\\aula\\relatorio.jrxml");   
               
    //Compilar o relatório   
        JasperReport jr = JasperCompileManager.compileReport(jd);   
               
    //Mescar os dados do JDBC ao documento do Relatório   
        JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);   
               
            //Download de PDF   
        response.reset();   
        response.setContentType("application/pdf");   
               
        OutputStream out = response.getOutputStream();   
        JasperExportManager.exportReportToPdfStream(jp, out);   
        out.flush();   
        out.close();               
        }   
        catch(Exception e){   
            e.printStackTrace();   
        }   
        finally{   
            d.close();   
        }   
       
    }   
       
  
  
}

No seu DAO, utilizei ProdutoDao:

public ResultSet findAll() throws Exception{   
           
    stmt = con.prepareStatement("select * from produto");   
    rs = stmt.executeQuery();   
           
    return rs; //Retorna o proprio ResultSet com os dados do JDBC   
}

Ai você baixa o !Report… e cria um relatório com ele… com tutoriais vc consegue fácil !!!

E na sua JSP, você coloca uma action do formulário ou um link mesmo, chamando seu servlet…

Assim:

ou por link, que seria a mesma coisa…

Gerar PDF

Seria mais ou menos assim… o Relatório é o nome da sua Classe no controle…

vlw

Qualquer coisa to aew…

Q

Percebi, que sua aplicação é Web.
a minha é Desktop.
é uma coisinha simples,
so quero imprimir valores de umas Strings na impressora
tipo assim: cadastrei cliente, e tenho a opçao de imprimir seus dados cadastrais.

nome:
endereco
telefone

isso armazenado em Strings
e quando clicar no botao imprimir,
saia os dados dele na impressora.

ja sei usar o !REPORT e gerar relatorios.
mais acho que o usuario vai fazer um monte de ações:

1-gerar relatorio do cliente;

2-Abrir janela de configuração de impressao;

3-e enfim, imprimir;

eu queria uma coisa rapida,
clicou, imprimiu.

nao sei se é possivel.

mas Valeu pela sua ajuda.
muito obrigado cara!

Q

Galera, ainda preciso de ajuda!!!
Por Favor

R

Porque não faz como o nosso amigo ai falou?

Gere em PDF pq gerando nele… o proprio programa do PDF te permite imprimir… ate mecher nas configurações da impressora ele ja faz pra vc pronto.

Q

mas eu nao tenho nem idéia de como fazer em pdf

R

Preciso responder algo? é só ler isso ai… ele ja ta te dando o código PRINCIPAL pronto… o que vc tem que fazer é so o iReport… gerar o .jasper e pronto… ta ai o seu PDF criado… =]

rsmoraes:
Vou te dar uma aplicação para abrir um documento em PDF…

no Servlet, você coloca assim:

package control;   
  
import java.io.IOException;   
import java.io.OutputStream;   
  
import javax.servlet.ServletException;   
import javax.servlet.http.HttpServlet;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.http.HttpServletResponse;   
  
import net.sf.jasperreports.engine.JRResultSetDataSource;   
import net.sf.jasperreports.engine.JasperCompileManager;   
import net.sf.jasperreports.engine.JasperExportManager;   
import net.sf.jasperreports.engine.JasperFillManager;   
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.engine.JasperReport;   
import net.sf.jasperreports.engine.design.JasperDesign;   
import net.sf.jasperreports.engine.xml.JRXmlLoader;   
  
import persistence.ProdutoDao;   
  
public class Relatorio extends HttpServlet {   
    private static final long serialVersionUID = 1L;   
  
    protected void doGet(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
    protected void doPost(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
        execute(request, response);   
    }   
  
  
    protected void execute(HttpServletRequest request,   
            HttpServletResponse response) throws ServletException, IOException {   
           
        ProdutoDao d = new ProdutoDao();   
           
        try{   
            d.open();   
               
    //JasperReports -> iReport   
           
    //Passo o ResultSet do JDBC para o Relatorio   
        JRResultSetDataSource ds = new JRResultSetDataSource(d.findAll());   
               
    //Arquivo do relatório   
        JasperDesign jd = JRXmlLoader.load("c:\\aula\\relatorio.jrxml");   
               
    //Compilar o relatório   
        JasperReport jr = JasperCompileManager.compileReport(jd);   
               
    //Mescar os dados do JDBC ao documento do Relatório   
        JasperPrint jp = JasperFillManager.fillReport(jr, null, ds);   
               
            //Download de PDF   
        response.reset();   
        response.setContentType("application/pdf");   
               
        OutputStream out = response.getOutputStream();   
        JasperExportManager.exportReportToPdfStream(jp, out);   
        out.flush();   
        out.close();               
        }   
        catch(Exception e){   
            e.printStackTrace();   
        }   
        finally{   
            d.close();   
        }   
       
    }   
       
  
  
}

No seu DAO, utilizei ProdutoDao:

public ResultSet findAll() throws Exception{   
           
    stmt = con.prepareStatement("select * from produto");   
    rs = stmt.executeQuery();   
           
    return rs; //Retorna o proprio ResultSet com os dados do JDBC   
}

Ai você baixa o !Report… e cria um relatório com ele… com tutoriais vc consegue fácil !!!

E na sua JSP, você coloca uma action do formulário ou um link mesmo, chamando seu servlet…

Assim:

ou por link, que seria a mesma coisa…

Gerar PDF

Seria mais ou menos assim… o Relatório é o nome da sua Classe no controle…

vlw

Qualquer coisa to aew…

C

Ola use este tutorial ele imprime usa o ireport bem simples e cria o pdf. Depois vc procura a funcao para nao aparecer o viewer do jasper nao lembro agora mas sei que tem como mandar direto pra impressora sem abrir o viewer, por que ja fiz.

http://www.k19.com.br/artigos/relatorios-em-java-jasperreports-e-irepor/#more-437

Criado 23 de janeiro de 2012
Ultima resposta 13 de jul. de 2012
Respostas 11
Participantes 6