Erro ao acessar um report

4 respostas
A

Bom dia pessoal! Estou com um problema, que imagino ser bem simples de se resolver, mas não estou conseguindo resolvê-lo. É o seguinte: Tenho uma aplicação que chama um Report, mas ao gerar o relatório em .pdf o adobe apresenta erro. Alguém já tratou esse tipo de situação.

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        boolean lPermissaoImpressao = true;
        ReportVO lReport = new ReportVO();
        UsuarioVO lUsuario = new UsuarioVO();
        lUrlSistema = request.getRequestURL().toString().replace(request.getServletPath(), Constantes.VAZIO);

        ServletOutputStream out = response.getOutputStream();

        ByteArrayOutputStream doc = null;

        try {

            lReport = ((ReportVO) request.getSession().getAttribute("sReport"));
            if (lReport == null) {
                response.sendRedirect(lUrlSistema);
            }
            else {
                lUsuario = ((UsuarioVO) request.getSession().getAttribute("usuarioAutenticado"));

                    String lUrlReport = getUrlRelatorio(lReport);

                    if (lUrlReport.length() > 0) {

                        doc = getReport(lUrlReport, response);
                        
                        response.setContentType(CONTENT_TYPE);
                        response.setHeader("Content-Disposition","attachment; filename=\"SecurityPatterns.pdf\"; encoding=\"ISO-8859-1\"");
                        response.setContentLength(doc.size());

                        doc.writeTo(out);
                    }
                    else {
                        out.println(NAO_EXISTEM_DADOS);
                    }
                }
        }
        catch (Exception e) {
            e.printStackTrace();
            LOG.error(e.getMessage(), e);
        }
        finally {
            if (doc != null) {
                doc.close();
            }
            if (out != null) {
                out.flush();
                out.close();
            }
        }
    }
____________________________________________________________________________________________

/**Método responsável por gerar o relatório

public static void gerarReport(ReportVO pReport) throws Exception {
        validarCamposReport(pReport);
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        pReport.setUrlServidorRep(getProperty("url.servidor.relatorios"));
        request.getSession().setAttribute("sReport", pReport);
        request.getSession().setAttribute("usuarioAutenticado", getUserSession());

        String lUrlSistema = request.getRequestURL().toString().replace(request.getServletPath(), "/").concat(
                SERVLET_REPORT);

        StringBuffer lRetorno = new StringBuffer();
        lRetorno.append("javascript:var w = window.open('");
        lRetorno.append(lUrlSistema);
        lRetorno.append("','Relatorio','resizable=yes,menubar=no,");
        lRetorno.append("scrollbars=no,status=no,toolbar=no,fullscreen=no,");
        lRetorno.append("dependent=no,width=758,height=600,left=100,top=200');");
        lRetorno.append(" if (window.execScript) { ");
        lRetorno.append(" window.execScript(w,JavaScript); ");
        lRetorno.append(" } else eval(w); ");

        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), String.valueOf(lRetorno));
    }

[color=red]Erro do Acrobat:

o Adobe Reader não pode abrir o arquivo porque não há suporte a esse tipo de arquivo ou ele foi danificado (por exemplo, foi enviado como anexo de e-mail e não foi decodificado corretamente).
[/color]

4 Respostas

juceliohv

Favor postar seu código usando as tags [code] e postar também o erro do Acrobat.

A
juceliohv:
Favor postar seu código usando as tags [code] e postar também o erro do Acrobat.
Código postado.
TheKill

Pelo que eu pude entender, vc jogou algo para o Acrobat ler, que não é PDF. por isto a exception

A

TheKill, imagino que não seja isso, pois não consigo gerar o relatório apenas quando executo a aplicação direto no servidor. Local todos funcionam. agradeço a força!

Criado 14 de junho de 2011
Ultima resposta 12 de jul. de 2011
Respostas 4
Participantes 3