publicclassIReportControlRaca{privatestaticfinalintPDF_BROWSER=0x01;privatestaticfinalintPDF_DOWNLOAD=0x02;privateIReportBeanRacaireport;/** * gerarRelatorioBrowser */publicvoidgerarRelatorioBrowser(){ireport=newIReportBeanRaca();List<Racas>listaRaca=ireport.gerarListRaca();JasperPrintjasper=ireport.gerarRelatorio(listaRaca);exportRelatorio(jasper,"blablabla",PDF_BROWSER);}/** * gerarRelatorioDownload */publicvoidgerarRelatorioDownload(){ireport=newIReportBeanRaca();List<Racas>listaRaca=ireport.gerarListRaca();JasperPrintjasper=ireport.gerarRelatorio(listaRaca);exportRelatorio(jasper,"download",PDF_DOWNLOAD);}/** * Gerar pdf * @param jasperPrinter * @param mode - que indica como deve ser gerado o pdf */publicvoidexportRelatorio(JasperPrintjasperPrinter,StringfileName,intmode){try{// @ outputStream ByteArrayOutputStreampdfStream=newByteArrayOutputStream();JasperExportManager.exportReportToPdfStream(jasperPrinter,pdfStream);HttpServletResponseresponse=(HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();// selecionando o modo que o pdf será processadoswitch(mode){casePDF_BROWSER:response.setContentType("application/pdf");break;casePDF_DOWNLOAD:response.setContentType("application/octet-stream");response.setHeader("Content-Disposition","attachment; filename="+fileName+".pdf");break;default:}response.setContentLength(pdfStream.size());ServletOutputStreamflusher;flusher=response.getOutputStream();pdfStream.writeTo(flusher);flusher.flush();flusher.close();FacesContext.getCurrentInstance().responseComplete();pdfStream.close();pdfStream=null;}catch(Exceptione){e.printStackTrace();}}}
E por ultimo a classe IReportBeanRaca:
publicclassIReportBeanRaca{/** * gerarRelatorio */publicJasperPrintgerarRelatorio(List<Racas>lista){JasperPrintjasperPrint=null;Stringpath="/WEB-INF/relatorio/raca/RelatorioGeralRacas.jasper";StringREAL_PATH=getRealPath(path);if(lista!=null){JRDataSourcejrds=newJRBeanCollectionDataSource(lista);FilereportFile=newFile(REAL_PATH);try{HashMapparameters=newHashMap();jasperPrint=JasperFillManager.fillReport(reportFile.getPath(),parameters,jrds);}catch(JRExceptione){System.out.println(e);}}returnjasperPrint;}/** * Gerar lista com Alunos */publicList<Racas>gerarListRaca(){RacaBeanraca=newRacaBean();List<Racas>listaRacas=newArrayList<Racas>();for(Iterator<Racas>it=raca.getRacasCadastradas().iterator();it.hasNext();){Racasracas=newRacas();racas=it.next();listaRacas.add(racas);}returnlistaRacas;}/** * Retorna o real path */publicstaticStringgetRealPath(StringpathReport){FacesContextfacesContext=FacesContext.getCurrentInstance();ServletContextcontext=(ServletContext)facesContext.getExternalContext().getContext();returncontext.getRealPath(pathReport);}}