Pessoal tenho esse código para visualizar o pdf na pagina, mas esta salvando em formato html, o que pode estar de errado?
Aqui ele lista os dados e retornando do banco:
public List<Relatoriopedido> getConsullistidpedido() {
try {
//Nova conexão e Statement
relatoriopedidodao = new Relatoriopedidodao();
consullistidpedido = relatoriopedidodao.consulidpedido(relatoriopedido, pedido);
return consullistidpedido;
} catch (Exception e) {
// Menssagem
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("ATENÇÃO", "OCORREU UM ERRO, TENTE NOVAMENTE!"));
//
return null;
}
}
// Visualizando relatório pegando o retorno do código acima
public void visualizarrelatoriopedido(ActionEvent actionEvent) throws JRException, IOException {
// Pegando o idpedido(object) e enviando como parametro para IReport(String)
Map<String,Object> parametros = new HashMap<String, Object>();
parametros.put("consulidpedido", this.pedido.getIdpedido());
//passando o arquivo e convertendo para o JasperReport
File jasper = new File(FacesContext.getCurrentInstance().getExternalContext().getRealPath("caminho do relatório"));
byte[] bytes = JasperRunManager.runReportToPdf(jasper.getPath(),parametros, new JRBeanCollectionDataSource(this.getConsullistidpedido()));
HttpServletResponse httpservletresponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpservletresponse.setContentType("aplication/pdf");
httpservletresponse.setContentLength(bytes.length);
ServletOutputStream stream = httpservletresponse.getOutputStream();
stream.write(bytes,0,bytes.length);
stream.flush();
stream.close();
FacesContext.getCurrentInstance().responseComplete();
}