Relatorio JasperReport do lado do Cliente - Flex
28/01/2011
0
private JasperPrint gerarJasperPrint(Map map) { String jasperFile = (String)map.get("reportName"); String pathJasper = ((String)map.get("pathJasper")) + jasperFile + ".jasper"; JasperPrint jasperPrint = null; try { JasperReport jasperReport = (JasperReport) JRLoader.loadObject(pathJasper); if (map.containsKey("REPORT_DATA_SOURCE")) { JRDataSource ds = (JRDataSource) map.get("REPORT_DATA_SOURCE"); JasperPrint impressao = new JasperPrint(); impressao = JasperFillManager.fillReport(jasperReport, map, ds); JasperViewer.viewReport(impressao, false); //viewer.setVisible(true); //viewer.show(); //viewer.setTitle("Relatorio do SIRH"); } else { jasperPrint = JasperFillManager.fillReport(jasperReport, map, new JREmptyDataSource()); } }catch (JRException e) { e.printStackTrace(); }catch (JRRuntimeException e) { System.out.println("ERRO NO JRXML"); e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } return jasperPrint; }
Anderson Suriano
Posts
28/01/2011
Davi Costa
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
Sendo que vc vai ter que fazer algumas alterações no seu response:
response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
response.setContentType("application/download");
response.setHeader("Pragma", "no-cache");
E criar servletOutputStream a partir do response:
ServletOutputStream servletOutputStream = response.getOutputStream();
Obviamente depois de ter feito alteração no seu response, conforme dito acima.
Depois da chamada do JasperRunManager vc dá um flush e um close no ServletOutputStream:
servletOutputStream.flush();
servletOutputStream.close();
No fim vai ter uma chamada mais ou menos assim:
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
response.setHeader("Content-Disposition", "attachment; filename="+ nomeRel +".pdf");
response.setContentType("application/download");
response.setHeader("Pragma", "no-cache");
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
//envia parametros para o relatório
if (parametros == null){
parametros = new HashMap<String, Object>();
}
//envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
}
Att Davi
28/01/2011
Anderson Suriano
28/01/2011
Davi Costa
Att Davi
28/01/2011
Anderson Suriano
28/01/2011
Davi Costa
De qualquer forma, boa sorte nas pesquisas.
Att Davi
31/01/2011
Anderson Suriano
31/01/2011
Robson Teixeira
recomendo você fazer para dowload seus relatorios segue 1 codigo de exemplo usando o HttpServletResponse
fileName =String com o nome do arquivo juntamente no formato desejado
fileBytes=relatorio compilado onde atraves do JasperPrint obtem o relatorio em bytes
resp.setContentType("application/octet-stream");
resp.setHeader("Content-disposition", "attachment;filename=\""+fileName+"\"");
resp.getOutputStream().write(fileBytes);
resp.getCharacterEncoding();
espero ter ajudado.
att
robson Passarella
Clique aqui para fazer login e interagir na Comunidade :)