JasperReport + response.sendRedirect(...) = ARQUIVO DANIFICADO

2 respostas
antonioni.rocha
Estou usando o JasperReports para gerar subrelatórios. Eu tenho um objeto Ocorrência com uma coleção de Fundamentações (que preenche o subrelatório).
Ocorrencia ocorrencia = ocorrenciaDAO.find(id); //'id' é um parâmetro passado
map.put("ocorrencia", ocorrencia);
map.put("nome", nome); //'nome' é um parâmetro passado

Set fundamentacoes = fundamentacaoDAO.findAll();
JREmptyDataSource eds = new JREmptyDataSource();
JRBeanCollectionDataSource jrDSFund = new JRBeanCollectionDataSource(fundamentacoes);
map.put("fundamentacoes", jrDSFund);
		
JasperReport relatorio = (JasperReport) JRLoader.loadObject(new File (C:/Resin/webapps/Rhnet/jaspers/ocorrencia.jasper"));
JasperPrint impressao = JasperFillManager.fillReport(relatorio, map, eds);
byte[] buffer = JasperExportManager.exportReportToPdf(impressao);
		
if(buffer != null) {
    FileOutputStream outputStream = new FileOutputStream(new File("C:/Resin/webapps/Rhnet/pdfs/requerimento.pdf"));
    outputStream.write(buffer, 0, buffer.length);
    outputStream.flush();
    outputStream.close();
};

return true;
O método retorna true se não houve exceção na hora de criar o arquivo requerimento.pdf, o que é verificado na jsp que processa este método (criando o pdf e sendo redirecionada a ele).

O bizarro é que o arquivo é gerado, podendo ser aberto de todas as maneiras (clique, link, navegador, Adobe Reader)... mas, na jsp, quando peço para redirecionar a página para o pdf, o Adobe Reader diz que o arquivo está danificado, embora consiga redirecionar tranquilamente com o javascript window.location .

(Já trabalhei na a geração de pdf com JasperFillManager e JasperExportManager, e funcionam.)

Alguma coisa errada no bloco if, onde gero o arquivo requerimento.pdf? :shock:

2 Respostas

aleck

tente utilizar o response.reset() antes de utilizar o response, me parece que o internet explorer mantém alguns dados de lixo no response, diferente de outros navegadores.

antonioni.rocha

Infelizmente não deu certo… o jeito é usar o javascript mesmo.
Agradeço a atenção.

A propósito, acabei de perceber que isto só ocorre no IE e quando o histórico está limpo, e na primeira vez que acesso o pdf. Depois ele passa a ser construído e exibido normalmente. :-o

Criado 2 de outubro de 2006
Ultima resposta 2 de out. de 2006
Respostas 2
Participantes 2