Fórum Relatorio JasperReport do lado do Cliente - Flex #394620
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
Curtir tópico
+ 0Posts
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
Gostei + 0
28/01/2011
Anderson Suriano
Gostei + 0
28/01/2011
Davi Costa
Att Davi
Gostei + 0
28/01/2011
Anderson Suriano
Gostei + 0
28/01/2011
Davi Costa
De qualquer forma, boa sorte nas pesquisas.
Att Davi
Gostei + 0
31/01/2011
Anderson Suriano
Gostei + 0
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
Gostei + 0
11/02/2011
Dyego Carmo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)