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!
Imprimir em impressora normal direto do java
11 Respostas
vc pode gerar um documento em PDF daí escolher se quer imprimir ou armazenar no seu PC…
mas como fazer isso em código? aindo sou muito novo em java?
nao conheço as classes que fazem isso?
Ó carinha, googlei “java printing api” e encontrei isto:
http://docs.oracle.com/javase/tutorial/2d/printing/index.html
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!
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…
Seria mais ou menos assim… o Relatório é o nome da sua Classe no controle…
vlw
Qualquer coisa to aew…
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!
Galera, ainda preciso de ajuda!!!
Por Favor
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.
mas eu nao tenho nem idéia de como fazer em pdf
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… =]
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…
Seria mais ou menos assim… o Relatório é o nome da sua Classe no controle…
vlw
Qualquer coisa to aew…
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