Eu chamo o relatório em pdf no browser atraves de uma servlet, pode ser?
A
andre.froes
eu lembro que o quebrandoparadigmas tinha feito um tutorial sobre como gerar relatório com primefaces e ireport, mas parece que tiraram do ar =/
vou criar um tutorial deste e postá-lo pro pessoal dps.
Mas como o Paezani falou, com o JSP é melhor gerar ele via servlet com alguma ferramenta te auxiliando.
A IBM tem um link que explica isso muito bem:
R
renatogon
A questão é que preciso inserir no relatório alguns campos de uma tabela de um banco de dados MySQL. Você acha que com essa Servlet agente consegue?
Pode ser sim, poste ai, conhecimento sempre é bom. E podemos ajudar outras pessoas que venha pesquisar sobre PDF.
R
renatogon
andre.froes:
eu lembro que o quebrandoparadigmas tinha feito um tutorial sobre como gerar relatório com primefaces e ireport, mas parece que tiraram do ar =/
vou criar um tutorial deste e postá-lo pro pessoal dps.
Mas como o Paezani falou, com o JSP é melhor gerar ele via servlet com alguma ferramenta te auxiliando.
A IBM tem um link que explica isso muito bem: http://www.ibm.com/developerworks/opensource/library/os-javapdf/
Boa, valeu Andre já ajuda, vou dar uma estudada.
Quando puder poste o tutorial sim, irá ajudar bastante. Encontrei alguns tutoriais, porém muito antigos, e nenhum funcionou.
Se alguem tiver um exemplo bem simples de código de JSP chamando um relatório do iReport irá ajudar muito.
Depois podemos ir estudando e melhorando.
P
Paezani
Segue a servlet que uso pra chamar um relatório em PDF no browse:
importjava.sql.*;importjava.text.DecimalFormat;importjava.io.*;importjava.util.Date;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;importnet.sf.jasperreports.engine.*;importnet.sf.jasperreports.engine.data.JRBeanArrayDataSource;importnet.sf.jasperreports.engine.data.JRBeanCollectionDataSource;importnet.sf.jasperreports.engine.export.JRHtmlExporter;importnet.sf.jasperreports.engine.util.JRLoader;importnet.sf.jasperreports.view.JasperViewer;importjava.util.Map;importjava.util.HashMap;importjava.sql.*;publicclasspDadosClienteextendsHttpServlet{booleanstatus;ResultSetrs;Stringcodcli;publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsIOException,ServletException{try{codcli=req.getParameter("codcli");// parametro recebido de um jsp com o código do cliente que será enviado para o ireportConectarconexao=newConectar();if(conexao.conecta(true)){ServletContextcontext=getServletContext();byte[]bytes=null;try{// carrega os arquivos jasper JasperReportrelatorioJasper=(JasperReport)JRLoader.loadObject(context.getRealPath("/WEB-INF/reports/dadoscliente.jasper"));//******* // Na variavel pathJasper ficara o caminho do diretório para// os relatórios compilados (.jasper)StringpathJasper=getServletContext().getRealPath("/WEB-INF/reports/")+"/";// A variavel path armazena o caminho real para o contexto// isso é util pois o seu web container pode estar instalado em lugares diferentesStringpath=getServletContext().getRealPath("/");// Parametrosdorelatorio//*********// parâmetros, se houverem Mapparametros=newHashMap();parametros.put("codcli",codcli);//valor do consumidor// direciona a saída do relatório para um stream bytes=JasperRunManager.runReportToPdf(relatorioJasper,parametros,conexao.MinhaConexao);}catch(JRExceptione){e.getMessage();}// envia o relatório em formato PDF para o browser res.setContentType("application/pdf");res.setContentLength(bytes.length);ServletOutputStreamouputStream=res.getOutputStream();ouputStream.write(bytes,0,bytes.length);ouputStream.flush();ouputStream.close();conexao.MinhaConexao.close();}else{ServletOutputStreamouputStream2=null;ouputStream2.print("Não foi possível se conectar com o banco de dados.");}}catch(Exceptionerro){PrintStreamtela=newPrintStream(res.getOutputStream());tela.println("<HTML><BODY>");tela.println("<script>alert('Não foi possível gerar o relatório.'"+erro.getMessage()+");history.back();</script>");tela.println("<BR><P>");tela.println("</HTML></BODY>");return;}}}
R
renatogon
Muito Obrigado mesmo pelo exemplo Paezane. Fiz os testes aqui e não consegui.
Nesse caso você chama essa Servlet de uma pagina correto?! Estou iniciando nesse assunto, tem como você postar um exemplo de uma pagina que chama essa Servlet?