GARANTIR DESCONTO

Fórum Erro abrir um pdf gerado pelo jasperreport #416242

04/05/2012

0

Boa Tarde,

estou gerando um arquivo no formato pdf na minha aplicação utilizando jsf, jpa e spring, tenho diversos exemplos inclusive utilizei o postado no endereço.
https://www.devmedia.com.br/forum/relatorio-ireport-erro-ao-gerar-relatorio/391764

Meu problema é o seguinte, coloco os exemplos na aplicação, gera o pdf, ao abrir pelo acrobat mostra a seguinte mensagem traduzida.
O Adobe Reader não pode abrir este tipo de aquivo pois não fornece suport ou ele foi danificado por exemplo (foi enviado com anexo de email e não foi decodificado corretamente).

Qualquer arquivo .jasper de projetos ja pronto na internet abre, porém quando é alterado e compilado pelo ireport que esta instalado na minha maquina dá este erro. a versão que estou utilizando é iReport-4.5.1.
Será alguma configuração que não estou fazendo da forma correta ?.
Roger Mendes

Roger Mendes

Responder

Posts

05/05/2012

Davi Costa

este erro é no próprio jasper, quando esse tipo de erro acontece seu console mostra o que aconteceu, posta aqui seu erro para a comunidade te ajudar melhor.

att Davi
Responder

Gostei + 0

07/05/2012

Roger Mendes

o erro apresentado quando salva o pdf e tenta abri-lo
Adobe Reader could not open null.pdf because it is either not a supported file
type or because the file has been damaged(for example, it was sent as an email attachment and
wasnt correctly decoded).

SE EU COLOCAR UM ARQUIVO .JASPER BAIXADO PELA INTERNET DE QUALQUER EXEMPLO ABRE NORMAL, MAS SE EU EDITAR ESTE ARQUIVO E COMPILAR NOVAMENTE E COLOCAR NA APLICAÇÃO APRESENTA ESTE ERRO ACIMA.
Responder

Gostei + 0

07/05/2012

Roger Mendes


SEGUE ABAIXO O CODIGO UTILIZADO PARA GERAR O PDF. SEGUI ESTE EXEMPLO NO FÓRUM.

//separa a pesquisa do total encontrado
//possibilitando a utilização também no relatório
public List<?> getRelatorioPesqPoi(){

Map<String, Object> params = new HashMap<String, Object>();
params.put(data1, data1);
params.put(data2, data2);

String query = SELECT p FROM Poi p WHERE p.dabertura BETWEEN :data1 AND :data2;
return poiDao.listPesqParam(query,params);

}


//inicio
// executa o relatório através de um JRBeanCollectionDataSource
public static void executarRelatorio1(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel,
JRBeanCollectionDataSource fonteDados) throws ParseException, JRException {

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

// pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);

/*
* //envia a resposta com o MIME Type
* if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
* response.setContentType(application/pdf); }else
* if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
* response.setContentType(application/html); }
*/
response.setHeader(Content-Disposition, attachment; filename= + nomeRel + .pdf);
// response.setContentType(application/download);
response.setContentType(application/pdf);
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();
//throw new Exception(Um erro ocorreu quando o relatório estava sendo executado.);
} catch (IOException e) {
e.printStackTrace();
//throw new JRException(ERRO_MENSAGEM_REPORT);
} finally {
context.responseComplete();
}
}

@SuppressWarnings( { unchecked })
public void executarRelatorio(ActionEvent action) throws ParseException, Exception {
List dados = new ArrayList();
Map record = null;



for (Iterator<?> iterator = getRelatorioPesqPoi().iterator();
iterator.hasNext();) {

Poi o = (Poi) iterator.next();
record = new HashMap();
// coloca em um Map cada um dos campos criados
// manualmente pelo relatorio
record.put(id,Long.valueOf(o.getId()));
record.put(cargo, o.getCargo());



// adiciona o List dados
dados.add(record);

}

// cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
Map<String, Object> parametros = new HashMap<String, Object>();
// parametros.put(PARAMETRO_TITULO_RELATORIO,
// RELATÓRIO DE UNIDADES);

executarRelatorio1(/relatorios/relatorio.jasper, parametros, null, fonteDados);

}
Responder

Gostei + 0

07/05/2012

Davi Costa

o melhor jeito de ajdarmos é só vc passar o erro no console, provavelmente ocorre algum erro lá...
tenta ver se vc consegue postar p gente. Pq pelo q vc diz c essa mesma implementação citada anteriormente vc executa alguns relatórios mas qdo vc altera dá problema...

att Davi
Responder

Gostei + 0

09/05/2012

Roger Mendes

Resolvido,
Imaginei que seria as bibliotecas pois toda vez que atualizava e compilava o arquivo .jasper, dava erro, estou usando a versão do ireport 4.5.1, atualizei na minha aplicação as bibliotecas do jasperreport ai funcionou uma beleza.

Obrigado.
Responder

Gostei + 0

09/05/2012

Davi Costa

Show de bola!
Sucesso ai no uso do ireport.

Qualquer dúvida só avisar

att Davi
Responder

Gostei + 0

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

Aceitar