lunes, 3 de octubre de 2016

IMAGENES CON GLASSFISH E IREPORT

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