Relatorio JasperReport do lado do Cliente - Flex

28/01/2011

0

Bom dia. Consegui gerar o relatorio em flex  no JasperReport, porém ele aparece na máquina do servidor qd executo no cliente. Como faço para que ele apareça para o cliente?????????? Segue o codigo:    
 
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

Anderson Suriano

Responder

Posts

28/01/2011

Davi Costa

Experimente:

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
Responder

28/01/2011

Anderson Suriano

Vc está gerando um pdf para impressao ..............   Estou usando o JasperViewer para que o usuario escolha em que padrao ele quer salvar (rtf, doc, xls)...........
Responder

28/01/2011

Davi Costa

Mas n tem só essa opção não, se vc ver tem outros métodos.

Att Davi
Responder

28/01/2011

Anderson Suriano

Muito obrigado pela ajuda. Tem como vc postar um exemplo simples de como usar desde o evento click do botao.   Estou arrumando um codigo Flex em que o programador utilizou uma framework para gerar os relatorios.................. Utilizo Blaze DS para conexao com Java.............porém estou com dificuldades para entender..............   Valeu     Suriano    
Responder

28/01/2011

Davi Costa

Pô cara vou ficar te devendo, não manjo muito desses frameworks://.
De qualquer forma, boa sorte nas pesquisas.

Att Davi
Responder

31/01/2011

Anderson Suriano

.............................. URGENTE .................................. Alguém poderia postar um exemplo de como gero relatorio do lado do cliente utilizando o JasperViewer, ou se nao tiver solução, como salvo no formato excel, doc, rtf............ Obrigado. Suriano
Responder

31/01/2011

Robson Teixeira

Olá Suriano
  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
Responder

11/02/2011

Dyego Carmo

Resolvido ? Feche a pendencia :)
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar