eae galera blz? to apanhando aki do jasper report ja tem 3 dias entao se alguem puder ajudar ,dar uma dica, uma luz!!!
eu ficaria muito grato =D.
O projeto em que trabalho usa jasper 3.0 e tem uns relatorios simples funcionando perfeitamente.
Mas o relatorio que eu estou implemntando ele tem 4 quebras e estou o subrelatorios para faze-las.
Entao para carregar os .jasper eu faço assim:
InputStream iStreamSubRelatorio = (InputStream) this.getClass().getClassLoader().getResourceAsStream(caminhoSubRelatorio);
map.put(“subRelatorioStream”, iStreamSubRelatorio );
InputStream iStreamSubRelatorio_2 = (InputStream) this.getClass().getClassLoader().getResourceAsStream(caminhoSubRelatorio_2);
map.put(“subRelatorioStream_2”, iStreamSubRelatorio _2);
InputStream iStreamSubRelatorio_3 = (InputStream) this.getClass().getClassLoader().getResourceAsStream(caminhoSubRelatorio_3);
map.put(“subRelatorioStream_3”, iStreamSubRelatorio _3);
.
.
.
Entao quando eu testo ele rodando jse o relatorio é gerado perfeitamente.
Mas quando eu peço para ser gerado na webapp(usa jsf) e visualiza-lo apareçe somente o binario no meu browser.
Então para me certificar que ele gerava o relatorio correto gerei o pdf no hd e ele esta normal.
código para gerar o pdf na web:
.
.
.
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
JasperPrint j = relatorio.construir();
JasperManager.printReportToPdfFile(j,"C:/teste.pdf");
byte[] bytes = JasperExportManager.exportReportToPdf(j);
if (bytes != null && bytes.length > 0) {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
//response.setHeader("Content-Disposition", "attachment;filename=" + DateUtil.retornaDataAtualSistema(DateUtil.FORMATO_DDMMYYYYHHmmss) + ".pdf");
response.setHeader("Content-Disposition", "inline;filename=\"" + DateUtil.retornaDataAtualSistema(DateUtil.FORMATO_DDMMYYYYHHmmss) + ".pdf\"");
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
facesContext.responseComplete();
ouputStream.flush();
ouputStream.close();
}
.
.
.
Eu penso que talvez a forma como esta conectada os subrelatorios não esta ideal.
Porque depois eu passo por parametro os InputStream’s que contem o caminhos dos .jasper
Desde já agradeço a atenção de todos.