Relatório gerado em pdf mas salva por default em xhtml ao invés de pdf

2 respostas
jasperjava
B

Pessoal boas, estou gerando relatórios no formato pdf, acontece que ao salvar ele salva no formato xhtml e não pdf como é gerado.

Caminho,

Relatório

2 Respostas

D

Posta o código que está utilizando para gerar e retornar o pdf para o usuário.

B

public void relatorioExtrato() {

byte[] bytes = null;

    try {

        Connection conn = null;

        conn = this.conexao.getConnection();
        //OutputStream saida = new FileOutputStream("teste.pdf");


        FacesContext context = FacesContext.getCurrentInstance();
        context.responseComplete();
       
        ServletContext scontext = (ServletContext) context.getExternalContext().getContext();

        
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

        //load report location
        FileInputStream fis = new FileInputStream(scontext.getRealPath("/WEB-INF/Relatorios/Contabilidade/extrato.jasper"));
        BufferedInputStream bufferedInputStream = new BufferedInputStream(fis);

        JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(bufferedInputStream);

        Map<String, Object> parametros = new HashMap();
        parametros.put("codigoConta", codigoConta);
        parametros.put("REPORT_CONNECTION",conn);
        parametros.put("SUBREPORT_DIR","/home/banguela/NetBeansProjects/SIGHP/SIGHP-war/web/WEB-INF/Relatorios/Contabilidade/subReportExtrato.jasper");
        parametros.put("SUBREPORT_DIR","/home/banguela/NetBeansProjects/SIGHP/SIGHP-war/web/WEB-INF/Relatorios/Contabilidade/subReportExtratoTwo.jasper");
       
        
        bytes = JasperRunManager.runReportToPdf(relatorioJasper, parametros, conn);
        if (bytes != null && bytes.length > 0) {
            // envia o relatório em formato PDF para o browser
            response.setContentType("application/pdf");
            response.setContentLength(bytes.length);
            response.setHeader("Content-Disposition", "attachment; filename=\"extrato.pdf\"");
            
            
            ServletOutputStream ouputStream = response.getOutputStream();
            
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
        }
    } catch (JRException ex) {

        ex.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        //connection.close();
    }

}
Criado 11 de março de 2017
Ultima resposta 15 de mar. de 2017
Respostas 2
Participantes 2