Olá a todos, bom estou tentando sem sucesso exibir um relatório em pdf diretamente na pagina, sei que existem milhoes de exemplos de códigos por ai, mas o fato é q eu já tentei vários, e simplesmente não acontece nd ao clicar no meu commandbutton.
é assim, em determinada parte do site, o usuario faz um pedido de orçamento, e ao salvar, eu usei o compomente p:filedownload do prime, para dar opção do usuario baixar o pdf do relatorio, mas em outra parte do site, os funcionarios da empresa devem ter uma opção de visualizar esse relatório diretamente na pagina, sem precisar fazer (download, salvar e dai abrir), ou então imprimir ele também diretamente sem vizualizar, e isso eu nao estou conseguindo fazer, já tentei usar vários codigos como o abaixo, com pequenas diferenças, mas quando executa, nada acontece no browser…
Lembrando q estou usando jsf 2.0 e primefaces, será q tem algo a ver com a forma q o navegador do jsf trata as requisições, atraves de forward ? se sim, alguem tem idéia de como resolver? [code]public void visualizarRelatorio() {
try {
System.out.println(“entrou no visualizar relatorio”);
if (orcamentoSelecionado == null) {
return;
}
//---------- gera o relatorio ----------
HashMap parametros = new HashMap();
parametros.put(“orcamento”, orcamentoSelecionado);
JasperReport jasperReport = JasperCompileManager.compileReport(getClass().getResourceAsStream("/relatorios/PedidoDeOrcamento.jrxml"));
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parametros, new JRBeanCollectionDataSource(itens));
byte[] b = JasperExportManager.exportReportToPdf(jasperPrint);
HttpServletResponse res = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
res.setContentType("application/pdf");
//Código abaixo gerar o relatório e disponibiliza diretamente na página
res.setHeader("Content-disposition", "inline;filename=arquivo.pdf");
//Código abaixo gerar o relatório e disponibiliza para o cliente baixar ou salvar
//res.setHeader("Content-disposition", "attachment;filename=arquivo.pdf");
res.getOutputStream().write(b);
res.getCharacterEncoding();
FacesContext.getCurrentInstance().responseComplete();
System.out.println("saiu do visualizar relatorio");
} catch (Exception ex) {
ex.printStackTrace();
}
}[/code]***EDIT *** faltou o código do commandbutton[code]<p:commandButton value="Visualizar relatório"
action="#{mBConsultarOrcamentos.visualizarRelatorio()}"
style="width: 50px;font-family: Tahoma;font-size: 12px"/>[/code]Desde já grato ! t+