16 enero 2009

Problemas com Facelets + JSF + Jasper

En esta página hay muchos links sobre jsf, seam y jasperReports.

Aunque hay que mirar las otras, la que he visto primero es:


http://www.guj.com.br/posts/list/99584.java


public static void geraPdf(JasperPrint jasperPrintSecao){
try{

//GERA PDF
// @ outputStream
ByteArrayOutputStream pdfStream = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrintSecao, pdfStream);

HttpServletResponse response
= (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=relatorio.pdf");
response.setContentLength(pdfStream.size()); //para o pdfStream


// Flush pdfStream pra response
ServletOutputStream flusher;
flusher = response.getOutputStream();
pdfStream.writeTo(flusher);
flusher.flush();
flusher.close();
FacesContext.getCurrentInstance().responseComplete();
pdfStream.close();
pdfStream = null;


}catch (Exception e) {
e.printStackTrace();
}

}





Llamada al método anterior:


List lista = new Vector();
lista = RelatorioFaturaDAOHibernate.selectDuplicata(faturaVO,
dataInicial, dataFinal);
String caminho = "relatorio_fatura.jasper";
String figura1 = "bandeira_brasil.jpg";
String figura2 = "bandeira_brasil.jpg";

Map parametros = new HashMap();
parametros.put("imagem_esquerda", getClass().getResourceAsStream(
figura1));
parametros.put("imagem_direita", getClass()
.getResourceAsStream(figura2));
try {
JasperPrint jasperPrintSecao = JasperFillManager.fillReport(
getClass().getResourceAsStream(caminho), parametros,
new JRBeanCollectionDataSource(lista));
JSFUtil.geraPdf(jasperPrintSecao);
...




No hay comentarios: