martes, 9 de junio de 2015

REPORTE EN JSF CON ITEX

Equipos, Materiales, Programas y Recursos:
  • PC con Sistema Operativo con soporte a Java.
  • IDE para Java
  • Navegador Web (recomendable Firefox)
  • Contenedor de Servlets (recomendable Tomcat)
Procedimiento y Resultados:
1.    Preparar el código en jsf
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
      xmlns:opt="http://primefaces.prime.com.tr/optimus">
<ui:composition template="/WEB-INF/plantillas/plantilla.xhtml">
      <ui:define name="contenido">
            <h:form style="margin-bottom: 8px">
                  <p:commandButton action="#{alumnoBean.imprimir()}" value="Reporte"
                        icon="icon-report" ajax="false">
                  </p:commandButton>
            </h:form>
      </ui:define>
</ui:composition>
</html>
2.    Crear una Clase llamada AlumnoBean
package org.login.managedbeans;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.login.beans.Alumno;
import org.login.dao.AlumnoDao;
import org.login.utils.FacesUtils;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.Paragraph;
import org.primefaces.context.RequestContext; 
@ManagedBean
@SessionScoped
public class AlumnoBean implements Serializable {
      private static final long serialVersionUID = 1L;
      private Alumno alumno;
      private List<Alumno> alumnos;
      private AlumnoDao alumnoDao;
      public AlumnoBean() {
            alumno = new Alumno();
      }
      public Alumno getAlumno() {
            return alumno;
      }
      public void setAlumno(Alumno alumno) {
            this.alumno = alumno;
      }
      public List<Alumno> getAlumnos() {
            alumnoDao = new AlumnoDao();
            alumnos = alumnoDao.buscarTodos();
            return alumnos;
      }
     
      }
       public void imprimir() {
             
             Document document = new Document(PageSize.LETTER);
             ByteArrayOutputStream baos = new ByteArrayOutputStream();
             try {
                   PdfWriter.getInstance(document, baos);
                  //METADATA
                   AlumnoDao alumnodaos = new AlumnoDao();
                   List<Alumno> alList = alumnodaos.buscarTodos();
                  document.open();
                 
                  document.add(new Paragraph(" ESTUDIANTES INSCRITOS \n"));
                 
                  DateFormat formatter= new SimpleDateFormat("dd/MM/yy '-' hh:mm:ss:");
                   Date currentDate = new Date();
                   String date = formatter.format(currentDate);
                  document.add(new Paragraph("Fecha Generado: "+date)); 
                  document.add(new Paragraph("\n"));
                  PdfPTable table = new PdfPTable(6);
                  table.setTotalWidth(new float[]{ 20,72, 110, 95, 170, 72 });
              table.setLockedWidth(true);

               PdfPCell cell = new PdfPCell(new Paragraph("Listado de ALumnos" ,
                       FontFactory.getFont("arial",   // fuente
                         8,                            // tamaño
                     Font.BOLD,                   // estilo
                               BaseColor.MAGENTA)));
                  cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                  cell.setBackgroundColor(BaseColor.GRAY);
                        cell.setColspan(6);
                  table.addCell(cell);
                  cell = new PdfPCell(new Paragraph ("ID", FontFactory.getFont("arial",8,Font.BOLD,BaseColor.GRAY )));

                  table.addCell("Paterno");
                  table.addCell("Materno");
                  table.addCell("Nombre");
                  table.addCell("Correo");
                  table.addCell("Dni");
                  for (int i = 0; i < alList.size(); i++) {
                        Alumno id = alList.get(i);
                        table.addCell(id.getId().toString());
                        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
                        table.addCell(id.getPaterno());
                        table.addCell(id.getMaterno());
                        table.addCell(id.getNombres());
                        table.addCell(id.getCorreo());
                        table.addCell(id.getDni());
                  }
                  document.add(table);
            } catch (Exception ex) {
                  System.out.println("Error " + ex.getMessage());
            }
            document.close();
            FacesContext context = FacesContext.getCurrentInstance();
            Object response = context.getExternalContext().getResponse();
            if (response instanceof HttpServletResponse) {
                  HttpServletResponse hsr = (HttpServletResponse) response;
                  hsr.setContentType("application/pdf");
                  hsr.setHeader("Content-disposition", "attachment");
                  hsr.setContentLength(baos.size());
                  try {
                        ServletOutputStream out = hsr.getOutputStream();
                        baos.writeTo(out);
                        out.flush();
                  } catch (IOException ex) {
                        System.out.println("Error:  " + ex.getMessage());
                  }
                  context.responseComplete();
            }
       }
       public void reset() { 
              RequestContext.getCurrentInstance().reset("formEditar:panel"); 
          }
}
3.    Resultado

No hay comentarios:

Publicar un comentario