Boa tarde Pessoal,
eu estou começando com Jasper e também com JSF.
Eu criei uma aplicação que consegue gerar um relatorio em pdf, e dá a opção para salvar
este pdf em anexo.
Eu gostaria de saber se é possível eu gerar o relatório em Html e exibílo em uma
página da minha apliação.
Alguém já fez isto ?
abaixo segue o código do médoto que gera em pdf, da minha aplicação.
public void generateReport(ActionEvent actionEvent)
throws ClassNotFoundException, SQLException, IOException, JRException, SystemException{
FacesContext context = FacesContext.getCurrentInstance();
InputStream reportStream = context.getExternalContext()
.getResourceAsStream("Livros.jasper");
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportStream);
Map<Object, Object> parameters = new HashMap<Object, Object>(); // aqui entra seus parametros para o relatorio
JRBeanCollectionDataSource beanDataSource = new JRBeanCollectionDataSource(
getList()); // aqui voce passa a lista de objetos a serem usados no relatorio, por exemplo lista de funcionarios
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanDataSource);
//JRXlsExporter exporter = new JRXlsExporter(); // para exportar para excel
//JRPdfExporter exporter = new JRPdfExporter(); // para exportar para pdf
JRHtmlExporter exporter = new JRHtmlExporter();
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
exporter.exportReport(); // exporta o relatório
setFileResponse(out.toByteArray(), jasperPrint.getName() + ".pdf","octet-stream/pdf"); // configura a resposta para ser um arquivo xls
} catch (JRException e) {
throw new SystemException("ecomri.message.error.general.param");
}
}
public void setFileResponse(byte[] file, String fileName, String contentType)
throws IOException {
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
response.setContentLength(file.length);
response.setContentType(contentType);
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.getOutputStream().write(file);
response.flushBuffer();
ctx.responseComplete();
}