poq meu relatorio aparece todo branco...aparece sem nada escrito nele...MAS ESCREVI algo nele pra testar
public void processRequest(ActionEvent event) throws IOException, JRException, SQLException{
Collection<CompraForm> relatorios = new ArrayList<CompraForm>();
FacesContext context = FacesContext.getCurrentInstance();
ServletContext sc = (ServletContext) context.getExternalContext().getContext();
String nomeArquivo = sc.getRealPath("/teste.jasper");
//logica
//relatorios.add(relatorio);
imprimir(nomeArquivo,new HashMap());
//JRBeanCollectionDataSource jrbc = new JRBeanCollectionDataSource(relatorios);
// JasperPrint jasperPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("teste.jasper"), new HashMap(), jrbc);
//this.enviarPDF(jasperPrint);
}
public void imprimir(String relatorio, HashMap<String, Object>
parametros) {
try {
parametros.put("data_inicio", "testandoooo");
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
ServletOutputStream servletOutputStream = response.getOutputStream();
byte[] bytes = JasperRunManager.runReportToPdf(relatorio, parametros); //aqui vc substitui pelo seu gerador de relatorios, ao seu modo
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "filename=\"Pedido.pdf\""); //nome que vc quer dar ao arquivo
response.setContentLength(bytes.length);
//sem essas linhas abaixo não funciona, não roda, da pau hehehe
servletOutputStream.write(bytes, 0, bytes.length);
servletOutputStream.flush();
servletOutputStream.close();
FacesContext.getCurrentInstance().renderResponse();
FacesContext.getCurrentInstance().responseComplete();
} catch (Exception ex) {
System.err.println("O arquivo não foi gerado corretamente!");
ex.printStackTrace();
}
}
//na pagina chamo assim
<h:form id="formulario">
<h:commandLink
value="Gerar relatório PDF" actionListener="#{relatorioBean.processRequest}" />
</h:form>