1. Base de datos MySQL
2. Clase java: Para efectos practicos tomar en cuenta solo la parte sombreada con rojo.
public class Reportes {
private String xcodigo;
private String xDescAreaser;
private byte[] ximgfoto;
//kITS DE CONTRATAS
public Reportes(String xcodigo, String xDescAreaser, byte[] ximgfoto) {
this.xcodigo = xcodigo;
this.xDescAreaser = xDescAreaser;
this.ximgfoto = ximgfoto;
}
public String getXcodigo() {
return xcodigo;
}
public void setXcodigo(String xcodigo) {
this.xcodigo = xcodigo;
}
public String getxDescAreaser() {
return xDescAreaser;
}
public void setxDescAreaser(String xDescAreaser) {
this.xDescAreaser = xDescAreaser;
}
public byte[] getXimgfoto() {
return ximgfoto;
}
public void setXimgfoto(byte[] ximgfoto) {
this.ximgfoto = ximgfoto;
}
}
3. Ireport 4.7.0: El field de Ireport debe tener el mismo nombre que el atributo de la clase.
4. Pasar coleccion de datos para luego exportarlo a pdf.
El metodo esta preparado para Primefaces.
public void exportToPdf(ActionEvent actionEvent) throws JRException, IOException {
JasperPrint jasperPrint = null;
List lstRep = new ArrayList();
if (lstHomKitcontrata != null) {
for (HomKitcontrata obj : lstHomKitcontrata) {
lstRep.add(new Reportes(
obj.getXcod(),
obj.getHomAreaservicioId().getXdesc(),
obj.getCnfEntidadesotId().getXimgfoto()
)
);
}
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(lstRep);
String report = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/protegido/operador/reportes/rep_kitscontrata.jasper");
jasperPrint = JasperFillManager.fillReport(report, new HashMap(), beanCollectionDataSource);
}
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "inline; filename=rep_kitscontrata.pdf");
ServletOutputStream servletStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletStream);
FacesContext.getCurrentInstance().responseComplete();
}
5. Ejecutar el metodo desde .xhtml y primefaces.
<p:commandButton id="exportToPdfButton" icon="ui-icon-document" value="Exportar" onclick="form.target = '_blank'" actionListener="#{homKitcontrataBean.exportToPdf(actionEvent)}" ajax="false" />
6. Resultado