DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
RMC
 


País: Brasil
Estado: GO
Cidade: Goiânia
Mensagens: 39
 Postado em: 4/5/2012 03:49:35 PM
 
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.
http://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 ?.
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 5/5/2012 11:45:46 AM
 
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
RMC
 


País: Brasil
Estado: GO
Cidade: Goiânia
Mensagens: 39
 Postado em: 7/5/2012 11:29:28 AM
 
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.
RMC
 


País: Brasil
Estado: GO
Cidade: Goiânia
Mensagens: 39
 Postado em: 7/5/2012 11:34:20 AM
 

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);

}
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 7/5/2012 09:25:26 PM
 
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
RMC
 


País: Brasil
Estado: GO
Cidade: Goiânia
Mensagens: 39
 Postado em: 9/5/2012 11:19:26 AM
 
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.
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 9/5/2012 08:56:54 PM
 
Show de bola!
Sucesso ai no uso do ireport.

Qualquer dúvida só avisar

att Davi
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03