Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Japer reports + Restful

Bom dia pessoal. Estou tendo problemas ao gerar gerar um relatório por uma aplicação web usando Rest.

Testando diretamente o método da classe que gera o relatório, funciona de boa. Mas ao chamar o método por uma classe Resource o relatório não é exportado e não dá nenhum erro.

    public void gerarPDF() {

        try {
            JasperPrint fillReport = construirRelatorio();
            HttpServletResponse response = filtroRelatorio.getResponse();
            response.setHeader("Content-Disposition", "attachment;filename="+filtroRelatorio.getNome() + ".pdf");
            response.setContentType("application/pdf");
            JasperExportManager.exportReportToPdfStream(fillReport, response.getOutputStream());
        } catch (JRException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    @GET
    @Path("versionar/relatorio/pdf")
    @Produces("application/pdf")
    public Response gerarRelatorioPdf() {
        bo.gerarRelatorioVersionamentoPorTipo(TipoRelatorio.PDF, response);
        return Response.ok().type("application/pdf").header("Content-Disposition", "attachment; filename=\"" + "teste.pdf" + "\"").build();
    }
2 respostas
solução!

Consegui resolver. Segue as alterações:

    public byte[] gerarPDF() {

        try {
            JasperPrint fillReport = construirRelatorio();
            return JasperExportManager.exportReportToPdf(fillReport);
        } catch (JRException e) {
            throw new RuntimeException(e);
        } 
    }
    @GET
    @Path("versionar/relatorio/pdf")
    @Produces("application/pdf")
    public Response gerarRelatorioPdf() {
        final String nomeRelatorio = "teste.pdf";
        byte[] relatorioVersionamento = bo.gerarRelatorioVersionamento();
        return Response.ok(relatorioVersionamento).type("application/pdf").header("Content-Disposition", "attachment; filename=\"" + nomeRelatorio + "\"").build();
    }

Boa Rodrigo.