Example usage for com.lowagie.text Font BOLD

List of usage examples for com.lowagie.text Font BOLD

Introduction

In this page you can find the example usage for com.lowagie.text Font BOLD.

Prototype

int BOLD

To view the source code for com.lowagie.text Font BOLD.

Click Source Link

Document

this is a possible style.

Usage

From source file:vistas.reportes.procesos.rptAsistenciaEntrada.java

public PdfPTable crearTabla(List<String> dnis, Date fechaInicio, Date fechaFin) throws DocumentException {
    /**//from w  w  w.  j a  v  a2 s.  co  m
     * Procesamiento para info para generar tablas
     */
    Calendar fechaInicioC = Calendar.getInstance();
    Calendar fechaFinC = Calendar.getInstance();
    fechaInicioC.setTime(fechaInicio);
    fechaFinC.setTime(fechaFin);

    /**
     * Procesamiento para elaborar tabla con datos
     */
    int nroColumnas = 6;
    PdfPTable tabla = new PdfPTable(nroColumnas);
    tabla.setWidthPercentage(100);
    //Asignamos los tamaos a las columnas 
    //MOdifique para tomar en cuenta la nueva columna de dewscuento
    int[] widthColumna = new int[nroColumnas];

    widthColumna[0] = 1;
    widthColumna[1] = 5;
    widthColumna[2] = 2;
    widthColumna[3] = 2;
    widthColumna[4] = 2;
    widthColumna[5] = 2;

    tabla.setWidths(widthColumna);

    //Definimos celdas iniciales
    Font fontCabecera = new Font(Font.HELVETICA, 8, Font.BOLD);
    Font fontCelda = new Font(Font.HELVETICA, 7);

    PdfPCell h0 = new PdfPCell(new Phrase("DNI", fontCabecera));
    h0.setHorizontalAlignment(1);
    h0.setGrayFill(0.7f);
    h0.setColspan(1);
    tabla.addCell(h0);

    PdfPCell h1 = new PdfPCell(new Phrase("NOMBRE EMPLEADO", fontCabecera));
    h1.setHorizontalAlignment(1);
    h1.setGrayFill(0.7f);
    h1.setColspan(1);
    tabla.addCell(h1);

    PdfPCell h2 = new PdfPCell(new Phrase("MARCACION ENTRADA", fontCabecera));
    h2.setHorizontalAlignment(1);
    h2.setGrayFill(0.7f);
    h2.setColspan(1);
    tabla.addCell(h2);

    PdfPCell h3 = new PdfPCell(new Phrase("ASISTENCIA", fontCabecera));
    h3.setHorizontalAlignment(1);
    h3.setGrayFill(0.7f);
    h3.setColspan(1);
    tabla.addCell(h3);

    //Agregado de columna de descuento sin goce
    PdfPCell h4 = new PdfPCell(new Phrase("OBSERVACION", fontCabecera));
    h4.setHorizontalAlignment(1);
    h4.setGrayFill(0.7f);
    h4.setColspan(1);
    tabla.addCell(h4);

    PdfPCell h5 = new PdfPCell(new Phrase("VACACION", fontCabecera));
    h5.setHorizontalAlignment(1);
    h5.setGrayFill(0.7f);
    h5.setColspan(1);
    tabla.addCell(h5);

    /**
     * Procesamiento de los datos para generar los registros de la entrada
     */
    for (String dni : dnis) {
        List<Marcacion> marcaciones = mc.buscarXFecha(dni, fechaInicio);
        String Asistencia = "";
        String Permiso = "";
        String Vacaciones = "";
        String marcacion = "";
        String condicion = "";
        System.out.println("DNI: " + dni);
        Empleado empleado = ec.buscarPorDni(dni);

        List<EmpleadoOpcionInfo> infoEmpleado = eoc.buscarTodos(Integer.parseInt(dni));
        if (!infoEmpleado.isEmpty()) {
            if (infoEmpleado.get(0).getSFieldValue5().equals("0")
                    || infoEmpleado.get(0).getSFieldValue5().equals("")
                    || infoEmpleado.get(0).getSFieldValue5().equals(" ")) {
                condicion = "NORMAL";
            } else if (infoEmpleado.get(0).getSFieldValue5().equals("1")) {
                condicion = "EXONERADO";
            } else if (infoEmpleado.get(0).getSFieldValue5().equals("2")) {
                condicion = "DESIGNADO";
            } else if (infoEmpleado.get(0).getSFieldValue5().equals("3")) {
                condicion = "OTRA SEDE";
            }
        } else {
            condicion = "Sin dato";
        }
        System.out.println("Condicion: " + condicion);
        //Datos de horario, jornada, empleado
        List<DetalleGrupoHorario> detallesGrupos = dc.buscarXEmpleado(empleado);
        if (condicion.equals("NORMAL")) {
            if (!marcaciones.isEmpty()) {
                Marcacion primeraMarcacion = marcaciones.get(0);
                marcacion = primeraMarcacion.getHora().toString();
                if (!detallesGrupos.isEmpty()) {
                    DetalleGrupoHorario detalleGrupoEmpleado = detallesGrupos.get(0);
                    List<AsignacionHorario> asignaciones = ashc
                            .buscarXGrupo(detalleGrupoEmpleado.getGrupoHorario());

                    AsignacionHorario asignacionEmpleado = asignaciones.get(0);
                    Horario horarioEmpleado = asignacionEmpleado.getHorario();
                    Jornada jornadaEmpleado = horarioEmpleado.getJornada();

                    //Validacion de asistencia
                    if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) == 0
                            || primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) < 0) {
                        Asistencia = "Asistencia Normal";
                    } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                            && primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) > 0) {
                        Asistencia = "Tardanza";
                    } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) > 0) {
                        Asistencia = "Falta";
                    }
                } else {
                    Asistencia = "No tiene grupo horario";
                }
            } else {
                marcacion = "Sin marcacion";
                Asistencia = "Falta";
            }
        } else if (condicion.equals("EXONERADO")) {
            marcacion = "Sin marcacion";
            Asistencia = condicion;
        } else if (condicion.equals("DESIGNADO")) {
            marcacion = "Sin marcacion";
            Asistencia = condicion;
        } else if (condicion.equals("OTRA SEDE")) {
            marcacion = "Sin marcacion";
            Asistencia = condicion;
        } else {
            marcacion = "Sin marcacion";
            Asistencia = "Condicin sin especificar";
        }

        //Validacion de permiso
        //Procesar permisos con horas tbm si no encuentra permisos por fechas 
        AsignacionPermiso asignacionPermisoEmpleado = aspc.buscarXDia(dni, fechaInicio);
        if (asignacionPermisoEmpleado != null) {
            Permiso = asignacionPermisoEmpleado.getPermiso().getTipoPermiso().getNombre();
            Asistencia = "Permiso";
        } else {
            Permiso = "Sin permiso";
        }
        //Validacion de Vacaciones
        Vacacion vacacionEmpleado = vc.buscarXDia(dni, fechaInicio);
        if (vacacionEmpleado != null) {
            Vacaciones = ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaInicio()) + " al "
                    + ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaFin());
            Asistencia = "Vacaciones";
        } else {
            Vacaciones = "No tiene vacaciones";
        }
        //DNI
        PdfPCell celdaNombre = new PdfPCell(new Phrase(empleado.getNroDocumento(), fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Nombre
        String celda0 = empleado.getApellidoPaterno() + " " + empleado.getApellidoMaterno() + " "
                + empleado.getNombre();
        celdaNombre.setPhrase(new Phrase(celda0, fontCelda));
        celdaNombre.setHorizontalAlignment(0);
        tabla.addCell(celdaNombre);
        //Hora Marcacion
        String celda = marcacion;
        celdaNombre.setPhrase(new Phrase(celda, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Asistencia
        String celda1 = Asistencia;
        celdaNombre.setPhrase(new Phrase(celda1, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Permiso
        String celda2 = Permiso;
        celdaNombre.setPhrase(new Phrase(celda2, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Vacacion
        String celda3 = Vacaciones;
        celdaNombre.setPhrase(new Phrase(celda3, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
    }
    return tabla;
}

From source file:vistas.reportes.procesos.rptAsistenciaTotal.java

public void crearPdf(String nombreFile, List<String> dnis, Date fechaInicio, Date fechaFin, String oficina,
        String tipo, String usuario, boolean isSelectedComp, boolean isSelectedHoraM)
        throws IOException, DocumentException {
    Document documento = new Document(PageSize.A4);
    PdfWriter.getInstance(documento, new FileOutputStream(nombreFile));
    documento.open();/*  ww  w  .j av  a2 s  .  c  o m*/
    Image cabecera = Image.getInstance("img/cabecera.png");
    cabecera.setAlignment(1);
    documento.add(cabecera);
    String nombreGrupoOficina = "";
    if (tipo == "O") {
        nombreGrupoOficina = "DEPENDENCIA:      ";
    } else if (tipo == "G") {
        nombreGrupoOficina = "GRUPO HORARIO: ";
    } else if (tipo == "P") {
        nombreGrupoOficina = "DEPENDENCIA:      ";
    }
    Font font = new Font(Font.HELVETICA, 10, Font.BOLD);
    Chunk nombreReporte = new Chunk("REPORTE DE CONTROL DE ASISTENCIA",
            new Font(Font.HELVETICA, 12, Font.BOLD));
    Chunk labelOficina = new Chunk(nombreGrupoOficina, font);
    Chunk labelFechaInicio = new Chunk("FECHA INICIO:        ", font);
    Chunk labelFechaFin = new Chunk("       FECHA FIN: ", font);
    //Chunk labelUsuario = new Chunk("USUARIO: ",font);

    Chunk nombreOficina = new Chunk(oficina, new Font(Font.HELVETICA, 10));
    Chunk nombreFechaInicio = new Chunk(ReporteUtil.obtenerFechaFormateada(fechaInicio, "/").toUpperCase(),
            new Font(Font.HELVETICA, 10));
    Chunk nombreFechaFin = new Chunk(ReporteUtil.obtenerFechaFormateada(fechaFin, "/").toUpperCase(),
            new Font(Font.HELVETICA, 10));
    //Chunk nombreUsuario = new Chunk(usuario.toUpperCase(), new Font(Font.HELVETICA,10));

    Paragraph pNombreReporte = new Paragraph(nombreReporte);
    pNombreReporte.setAlignment(1);
    documento.add(pNombreReporte);
    documento.add(ReporteUtil.darEspaciado(25));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelOficina, nombreOficina)));
    documento.add(ReporteUtil.darEspaciado(15));
    if (tipo == "P") {
        Chunk labelDniEmpleado = new Chunk("DNI:                           ", font);
        Chunk labelNombreEmpleado = new Chunk("NOMBRE:                ", font);
        Empleado empleado = ec.buscarPorDni(dnis.get(0));
        Chunk nombreDni = new Chunk(empleado.getNroDocumento(), new Font(Font.HELVETICA, 10));
        Chunk nombreEmpleado = new Chunk(empleado.getApellidoPaterno() + " " + empleado.getApellidoMaterno()
                + " " + empleado.getNombre(), new Font(Font.HELVETICA, 10));
        documento.add(new Paragraph(ReporteUtil.unirChunks(labelNombreEmpleado, nombreEmpleado)));
        documento.add(ReporteUtil.darEspaciado(15));
        documento.add(new Paragraph(ReporteUtil.unirChunks(labelDniEmpleado, nombreDni)));
        documento.add(ReporteUtil.darEspaciado(15));
    }
    documento.add(new Paragraph(
            ReporteUtil.unirChunks(labelFechaInicio, nombreFechaInicio, labelFechaFin, nombreFechaFin)));
    documento.add(ReporteUtil.darEspaciado(15));

    //documento.add(new Paragraph(ReporteUtil.unirChunks(labelFechaFin,nombreFechaFin)));
    //documento.add(ReporteUtil.darEspaciado(15));
    //documento.add(new Paragraph(ReporteUtil.unirChunks(labelUsuario,nombreUsuario)));
    documento.add(ReporteUtil.darEspaciado(20));
    PdfPTable tabla = new rptAsistenciaTotal().crearTabla(dnis, fechaInicio, fechaFin, isSelectedComp,
            isSelectedHoraM, tipo);
    documento.add(tabla);
    documento.close();
    try {
        File path = new File(nombreFile);
        Desktop.getDesktop().open(path);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

From source file:vistas.reportes.procesos.rptAsistenciaTotal.java

public PdfPTable crearTabla(List<String> dnis, Date fechaInicio, Date fechaFin, boolean isSelectedComp,
        boolean isSelectedHoraM, String tipo) throws DocumentException {
    /**/*from  www . j  av  a 2  s .c o  m*/
     * Procesamiento para info para generar tablas
     */
    /**
     * Procesamiento para elaborar tabla con datos
     */
    int nroColumnas;
    if (isSelectedComp) {
        nroColumnas = 9;
    } else {
        nroColumnas = 8;
    }
    if (tipo == "P") {
        nroColumnas -= 2;
    }
    //int nroColumnas = 8;
    PdfPTable tabla = new PdfPTable(nroColumnas);
    tabla.setWidthPercentage(100);
    //Asignamos los tamaos a las columnas 
    //MOdifique para tomar en cuenta la nueva columna de dewscuento
    int[] widthColumna = new int[nroColumnas];
    if (tipo == "P") {
        widthColumna[0] = 1;
        widthColumna[1] = 1;
        widthColumna[2] = 1;
        widthColumna[3] = 1;
        widthColumna[4] = 2;
        widthColumna[5] = 1;
        if (isSelectedComp) {
            widthColumna[6] = 1;
        }
    } else {
        widthColumna[0] = 1;
        widthColumna[1] = 4;
        widthColumna[2] = 1;
        widthColumna[3] = 1;
        widthColumna[4] = 1;
        widthColumna[5] = 1;
        widthColumna[6] = 2;
        widthColumna[7] = 1;
        if (isSelectedComp) {
            widthColumna[8] = 1;
        }
    }

    tabla.setWidths(widthColumna);

    //Definimos celdas iniciales
    Font fontCabecera = new Font(Font.HELVETICA, 8, Font.BOLD);
    Font fontCelda = new Font(Font.HELVETICA, 7);
    //        HeaderFooter cabecera = new HeaderFooter(new Phrase("This is a header."), false);
    //        cabecera.

    if (tipo != "P") {
        PdfPCell h0 = new PdfPCell(new Phrase("DNI", fontCabecera));
        h0.setHorizontalAlignment(1);
        h0.setGrayFill(0.7f);
        h0.setColspan(1);
        tabla.addCell(h0);

        PdfPCell h1 = new PdfPCell(new Phrase("NOMBRE EMPLEADO", fontCabecera));
        h1.setHorizontalAlignment(1);
        h1.setGrayFill(0.7f);
        h1.setColspan(1);
        tabla.addCell(h1);
    }

    PdfPCell h2 = new PdfPCell(new Phrase("FECHA", fontCabecera));
    h2.setHorizontalAlignment(1);
    h2.setGrayFill(0.7f);
    h2.setColspan(1);
    tabla.addCell(h2);

    PdfPCell h3 = new PdfPCell(new Phrase("MARC. ENTR.", fontCabecera));
    h3.setHorizontalAlignment(1);
    h3.setGrayFill(0.7f);
    h3.setColspan(1);
    tabla.addCell(h3);

    PdfPCell h4 = new PdfPCell(new Phrase("MARC. SAL.", fontCabecera));
    h4.setHorizontalAlignment(1);
    h4.setGrayFill(0.7f);
    h4.setColspan(1);
    tabla.addCell(h4);

    PdfPCell h5 = new PdfPCell(new Phrase("ESTADO", fontCabecera));
    h5.setHorizontalAlignment(1);
    h5.setGrayFill(0.7f);
    h5.setColspan(1);
    tabla.addCell(h5);

    PdfPCell h6 = new PdfPCell(new Phrase("OBSERV.", fontCabecera));
    h6.setHorizontalAlignment(1);
    h6.setGrayFill(0.7f);
    h6.setColspan(1);
    tabla.addCell(h6);

    PdfPCell h7 = new PdfPCell(new Phrase("PER. VAC", fontCabecera));
    h7.setHorizontalAlignment(1);
    h7.setGrayFill(0.7f);
    h7.setColspan(1);
    tabla.addCell(h7);

    if (isSelectedComp) {
        PdfPCell h8 = new PdfPCell(new Phrase("COMPENSA", fontCabecera));
        h8.setHorizontalAlignment(1);
        h8.setGrayFill(0.7f);
        h8.setColspan(1);
        tabla.addCell(h8);
    }
    //Hacemos que la primera fila sea la cabecera
    tabla.setHeaderRows(1);
    /**
     * Procesamiento de los datos para generar los registros de la entrada
     */

    Calendar calC = Calendar.getInstance();
    for (String dni : dnis) {
        Calendar iterador = Calendar.getInstance();
        iterador.setTime(fechaInicio);
        while (iterador.getTime().compareTo(fechaFin) <= 0) {
            Date fecha = iterador.getTime();
            //Descartar si es sabado o domingo
            System.out.println("Dni: " + dni + " Fecha: " + fecha.toString());
            Empleado empleado = ec.buscarPorDni(dni);
            boolean isFeriado = false;
            String feriado = "";
            //Para inicio de contrato
            if (empleado.getFechaInicioContrato().compareTo(fecha) <= 0) {
                System.out.println("OK");
            } else {
                iterador.add(Calendar.DATE, 1);
                continue;
            }
            /**
             * Generacion de permiso por onomastico
             */
            if (isOnosmatico(fecha, empleado)) {
                Calendar fechaPermisoOno = Calendar.getInstance();
                fechaPermisoOno.setTime(fecha);

                while (fc.buscarXDia(fechaPermisoOno.getTime()) != null) {
                    fechaPermisoOno.add(Calendar.DATE, 1);
                }
                while (!ReporteUtil.isDiaLaboral(fechaPermisoOno.getTime())) {
                    fechaPermisoOno.add(Calendar.DATE, 1);
                }
                if (ReporteUtil.isDiaLaboral(fechaPermisoOno.getTime())) {
                    //busca onomastico
                    if (aspc.buscarXDiaOnosmatico(dni, fechaPermisoOno.getTime()) != null) {
                        System.out.println("Hay cumpleaosd d_d");
                    } else {
                        System.out.println("Crear Cumple");
                        crearOnomastico(fechaPermisoOno.getTime(), empleado);
                    }
                }
            } else {
                System.out.println("No cumple");
            }

            if (!ReporteUtil.isDiaLaboral(fecha)) {
                iterador.add(Calendar.DATE, 1);
                continue;
            }
            if (fc.buscarXDia(fecha) != null) {
                isFeriado = true;
                feriado = fc.buscarXDia(fecha).getNombre();
            }
            //Marcaciones del dia a procesar
            List<Marcacion> marcaciones = mc.buscarXFecha(dni, fecha);
            String Asistencia = "";
            String Permiso = "";
            String Vacaciones = "";
            String marcacion = "";
            String marcacion2 = "";
            String condicion = "";
            String compensacion = "";
            Marcacion primeraMarcacion = new Marcacion();
            Marcacion ultimaMarcacion = new Marcacion();

            List<EmpleadoOpcionInfo> infoEmpleado = eoc.buscarTodos(Integer.parseInt(dni));
            if (!infoEmpleado.isEmpty()) {
                if (infoEmpleado.get(0).getSFieldValue5().equals("0")
                        || infoEmpleado.get(0).getSFieldValue5().equals("")
                        || infoEmpleado.get(0).getSFieldValue5().equals(" ")) {
                    condicion = "NORMAL";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("1")) {
                    condicion = "Exonerado";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("2")) {
                    condicion = "Designado";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("3")) {
                    condicion = "Otra sede";
                }
            } else {
                condicion = "Sin dato";
            }
            System.out.println("Condicion: " + condicion);
            //Datos de horario, jornada, empleado
            List<DetalleGrupoHorario> detallesGrupos = dc.buscarXEmpleado(empleado);
            if (condicion.equals("NORMAL")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    if (marcaciones.size() > 1) {
                        ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                        marcacion2 = ultimaMarcacion.getHora().toString();
                    } else {
                        marcacion2 = "---";
                    }
                    //ultimaMarcacion = marcaciones.get(marcaciones.size()-1);
                    /**
                     *Codigo para el manejo de asignaciones de horario
                     */

                    if (!detallesGrupos.isEmpty()) {
                        DetalleGrupoHorario detalleGrupoEmpleado = detallesGrupos.get(0);

                        List<AsignacionHorario> asignaciones = ashc
                                .buscarXGrupo(detalleGrupoEmpleado.getGrupoHorario());
                        //List<AsignacionHorario> asignacionesHorario = ashc.bus
                        List<AsignacionHorario> asignacionesHorarios = ashc.buscarXEmpleadosXAll(dni, fecha);
                        //Declaramos la variable asighorario q usaremos
                        /**
                         * Vemos si tiene una asignacion horario en particular para asignar la jornada q le corresponde, sino la tiene se asigna la jornada por 
                         * defecto del grupo horario general
                         */
                        AsignacionHorario asignacionEmpleado;
                        if (!asignacionesHorarios.isEmpty()) {
                            asignacionEmpleado = asignacionesHorarios.get(0);
                        } else {
                            asignacionEmpleado = asignaciones.get(0);
                        }
                        //AsignacionHorario asignacionEmpleado = asignaciones.get(0);
                        Horario horarioEmpleado = asignacionEmpleado.getHorario();
                        Jornada jornadaEmpleado = horarioEmpleado.getJornada();

                        //Validacion de asistencia
                        if (ultimaMarcacion.getHora() != null) {
                            if (!isSelectedHoraM) {
                                marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                            }
                            if (primeraMarcacion.getHora().compareTo(ultimaMarcacion.getHora()) < 0) {
                                if ((primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) == 0
                                        || primeraMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHE()) < 0)
                                        && (ultimaMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHS()) == 0
                                                || ultimaMarcacion.getHora()
                                                        .compareTo(jornadaEmpleado.getTurnoHS()) > 0)) {
                                    Asistencia = " ";
                                    //marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                } else if (primeraMarcacion.getHora()
                                        .compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                        && primeraMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHE()) > 0) {
                                    Asistencia = "TARDANZA";
                                    //marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                } else if (primeraMarcacion.getHora()
                                        .compareTo(jornadaEmpleado.getTardanzaHE()) > 0
                                        && ultimaMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHS()) < 0) {
                                    Asistencia = "FALTA";
                                    //Cambio hasta tener directiva
                                    //Asistencia = "TARDANZA";
                                } else if (primeraMarcacion.getHora()
                                        .compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                        && ultimaMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHS()) < 0) {
                                    System.out.println("Hora de salida jornada: "
                                            + jornadaEmpleado.getTurnoHS().toString());
                                    Asistencia = "FALTA";
                                    //Cambio hasta tener directiva
                                    //Asistencia = "TARDANZA";
                                } else if (primeraMarcacion.getHora()
                                        .compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                        && ultimaMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHS()) > 0) {
                                    //Asistencia = "Falta";
                                    //Cambio hasta tener directiva
                                    Asistencia = "TARDANZA";
                                    //marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                } else if (primeraMarcacion.getHora()
                                        .compareTo(jornadaEmpleado.getTardanzaHE()) > 0
                                        && ultimaMarcacion.getHora()
                                                .compareTo(jornadaEmpleado.getTurnoHS()) > 0) {
                                    //Asistencia = "Falta";
                                    //Cambio hasta tener directiva
                                    Asistencia = "TARDANZA";
                                    //marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                }
                                //Para la compensacion
                                if (isSelectedComp) {
                                    if (ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) > 0) {
                                        calC.setTime(ultimaMarcacion.getHora());
                                        int horaUM = calC.get(Calendar.HOUR_OF_DAY);
                                        int minUM = calC.get(Calendar.MINUTE);
                                        calC.setTime(jornadaEmpleado.getTurnoHS());
                                        int horaHS = calC.get(Calendar.HOUR_OF_DAY);
                                        int minHS = calC.get(Calendar.MINUTE);
                                        System.out.println("Horas: " + " " + horaUM + " " + minUM + " " + horaHS
                                                + " " + minHS);
                                        if (horaUM > horaHS) {
                                            if (minUM > minHS) {
                                                compensacion = "" + (horaUM - horaHS) + " H";
                                            } else {
                                                compensacion = (horaUM - (horaHS + 1)) + " H";
                                            }
                                        } else {
                                            compensacion = "0 H";
                                        }
                                    }
                                }
                            } else {
                                Asistencia = "FALTA";
                            }
                        } else {
                            Asistencia = "FALTA";
                        }
                        if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) >= 0) {
                            marcacion2 = primeraMarcacion.getHora().toString();
                            marcacion = "---";
                        } else {
                            marcacion = primeraMarcacion.getHora().toString();
                        }

                    } else {
                        Asistencia = "No tiene grupo horario";
                    }
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = "FALTA";
                }
            } else if (condicion.equals("Exonerado")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                }
            } else if (condicion.equals("Designado")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                }
            } else if (condicion.equals("Otra sede")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion.toUpperCase();
                }
            } else {
                marcacion = "---";
                marcacion2 = "---";
                Asistencia = "Condicin sin especificar".toUpperCase();
            }

            //Validacion de permiso
            //Procesar permisos con horas tbm si no encuentra permisos por fechas 
            AsignacionPermiso asignacionPermisoEmpleadoDia = aspc.buscarXDia(dni, fecha);
            Calendar horaESinCero = Calendar.getInstance();
            Calendar horaFSinCero = Calendar.getInstance();
            if (primeraMarcacion.getHora() != null) {
                horaESinCero.setTime(primeraMarcacion.getHora());
                horaESinCero.set(Calendar.SECOND, 0);
            }
            if (ultimaMarcacion.getHora() != null) {
                horaFSinCero.setTime(ultimaMarcacion.getHora());
                horaFSinCero.set(Calendar.SECOND, 0);
            }

            AsignacionPermiso asigPerEntrada = aspc.buscarOnlyHora(dni, horaESinCero.getTime(), fecha);
            AsignacionPermiso asigPerSalida = aspc.buscarOnlyHora(dni, horaFSinCero.getTime(), fecha);
            if (asignacionPermisoEmpleadoDia != null) {
                Permiso = asignacionPermisoEmpleadoDia.getPermiso().getDocumento().toUpperCase();
                Asistencia = asignacionPermisoEmpleadoDia.getPermiso().getTipoPermiso().getNombre()
                        .toUpperCase();
            } else if (asigPerEntrada != null) {
                Permiso = asigPerEntrada.getPermiso().getDocumento().toUpperCase();
                Asistencia = asigPerEntrada.getPermiso().getTipoPermiso().getNombre().toLowerCase();
            } else if (asigPerSalida != null) {
                Permiso = asigPerSalida.getPermiso().getDocumento().toUpperCase();
                Asistencia = asigPerSalida.getPermiso().getTipoPermiso().getNombre().toUpperCase();
            } else {
                Permiso = "";
            }
            //Validacion de Vacaciones
            Vacacion vacacionEmpleado = vc.buscarXDia(dni, fecha);
            if (vacacionEmpleado != null) {
                Vacaciones = ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaInicio()) + " al "
                        + ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaFin());
                Asistencia = "VACACIONES";
                Permiso = vacacionEmpleado.getDocumento().toUpperCase();
            } else {
                Vacaciones = "";
            }
            if (isFeriado) {
                Asistencia = feriado;
            }
            PdfPCell celdaNombre = new PdfPCell(new Phrase(empleado.getNroDocumento(), fontCelda));
            celdaNombre.setMinimumHeight(15f);
            if (tipo != "P") {
                //DNI
                celdaNombre.setHorizontalAlignment(1);
                tabla.addCell(celdaNombre);
                //Nombre
                String celda0 = empleado.getApellidoPaterno() + " " + empleado.getApellidoMaterno() + " "
                        + empleado.getNombre();
                celdaNombre.setPhrase(new Phrase(celda0, fontCelda));
                celdaNombre.setHorizontalAlignment(0);
                tabla.addCell(celdaNombre);
            }
            //Fecha
            String celdaA = ReporteUtil.obtenerFechaFormateada(fecha, "/");
            celdaNombre.setPhrase(new Phrase(celdaA, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Hora Marcacion de entrada
            String celda = marcacion;
            celdaNombre.setPhrase(new Phrase(celda, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Hora Marcacion de Salida
            String celdaM = marcacion2;
            celdaNombre.setPhrase(new Phrase(celdaM, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Asistencia
            String celda1 = Asistencia;
            celdaNombre.setPhrase(new Phrase(celda1, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Permiso
            String celda2 = Permiso;
            celdaNombre.setPhrase(new Phrase(celda2, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Vacacion
            String celda3 = Vacaciones;
            celdaNombre.setPhrase(new Phrase(celda3, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Compensacion
            if (isSelectedComp) {
                String celda4 = compensacion;
                celdaNombre.setPhrase(new Phrase(celda4, fontCelda));
                celdaNombre.setHorizontalAlignment(1);
                tabla.addCell(celdaNombre);
            }
            iterador.add(Calendar.DATE, 1);
        }
    }
    return tabla;
}

From source file:vistas.reportes.procesos.rptFaltas.java

public void crearPdf(String nombreFile, List<String> dnis, Date fechaInicio, Date fechaFin, String oficina,
        String tipo, String usuario) throws IOException, DocumentException {
    Document documento = new Document(PageSize.A4);
    PdfWriter.getInstance(documento, new FileOutputStream(nombreFile));
    documento.open();/*  w  w w .jav  a 2  s. c  om*/
    String nombreGrupoOficina = "";
    if (tipo == "O") {
        nombreGrupoOficina = "OFICINA: ";
    } else {
        nombreGrupoOficina = "GRUPO HORARIO: ";
    }
    Font font = new Font(Font.HELVETICA, 10, Font.BOLD);
    Chunk nombreReporte = new Chunk("REPORTE DE FALTAS", font);
    Chunk labelOficina = new Chunk(nombreGrupoOficina, font);
    Chunk labelFechaInicio = new Chunk("FECHA INICIO: ", font);
    Chunk labelFechaFin = new Chunk("FECHA FIN: ", font);
    Chunk labelUsuario = new Chunk("USUARIO: ", font);

    Chunk nombreOficina = new Chunk(oficina, new Font(Font.HELVETICA, 10));
    Chunk nombreFechaInicio = new Chunk(ReporteUtil.obtenerFechaFormateada(fechaInicio, "/").toUpperCase(),
            new Font(Font.HELVETICA, 10));
    Chunk nombreFechaFin = new Chunk(ReporteUtil.obtenerFechaFormateada(fechaFin, "/").toUpperCase(),
            new Font(Font.HELVETICA, 10));
    Chunk nombreUsuario = new Chunk(usuario.toUpperCase(), new Font(Font.HELVETICA, 10));

    documento.add(new Paragraph(nombreReporte));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelOficina, nombreOficina)));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelFechaInicio, nombreFechaInicio)));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelFechaFin, nombreFechaFin)));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelUsuario, nombreUsuario)));
    documento.add(ReporteUtil.darEspaciado(20));
    PdfPTable tabla = new rptFaltas().crearTabla(dnis, fechaInicio, fechaFin);
    documento.add(tabla);
    documento.close();
    try {
        File path = new File(nombreFile);
        Desktop.getDesktop().open(path);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

From source file:vistas.reportes.procesos.rptFaltas.java

public PdfPTable crearTabla(List<String> dnis, Date fechaInicio, Date fechaFin) throws DocumentException {
    /**//from   w  w  w . j a v a 2  s  .c  o m
     * Procesamiento para info para generar tablas
     */
    Calendar fechaInicioC = Calendar.getInstance();
    Calendar fechaFinC = Calendar.getInstance();
    fechaInicioC.setTime(fechaInicio);
    fechaFinC.setTime(fechaFin);

    int diaMesInicio, diaMesFin;
    diaMesInicio = fechaInicioC.get(Calendar.DAY_OF_MONTH);
    diaMesFin = fechaFinC.get(Calendar.DAY_OF_MONTH);

    // Dias contados desde un inicio y fin fecha
    ArrayList<Integer> listaInt = new ArrayList<>();
    for (int i = diaMesInicio; i <= diaMesFin; i++) {
        listaInt.add(i);
    }
    //Ordenamos arraylist
    int indice, menor, aux;
    for (int i = 0; i < listaInt.size(); i++) {
        menor = listaInt.get(i);
        indice = i;
        aux = 0;
        for (int j = i + 1; j < listaInt.size(); j++) {
            aux = listaInt.get(j);
            indice = aux < menor ? j : indice;
            menor = aux < menor ? aux : menor;
        }
        listaInt.set(indice, listaInt.get(i));
        listaInt.set(i, menor);
    }
    /**
     * Procesamiento para elaborar tabla con datos
     */
    int nroColumnas = 3;
    PdfPTable tabla = new PdfPTable(nroColumnas);
    tabla.setWidthPercentage(100);
    //Asignamos los tamaos a las columnas 
    //MOdifique para tomar en cuenta la nueva columna de dewscuento
    int[] widthColumna = new int[nroColumnas];

    widthColumna[0] = 1;
    widthColumna[1] = 5;
    widthColumna[2] = 1;
    //widthColumna[8]=1;

    tabla.setWidths(widthColumna);

    //Definimos celdas iniciales
    Font fontCabecera = new Font(Font.HELVETICA, 8, Font.BOLD);
    Font fontCelda = new Font(Font.HELVETICA, 7);
    //        HeaderFooter cabecera = new HeaderFooter(new Phrase("This is a header."), false);
    //        cabecera.
    PdfPCell h0 = new PdfPCell(new Phrase("DNI", fontCabecera));
    h0.setHorizontalAlignment(1);
    h0.setGrayFill(0.7f);
    h0.setColspan(1);
    tabla.addCell(h0);

    PdfPCell h1 = new PdfPCell(new Phrase("NOMBRE EMPLEADO", fontCabecera));
    h1.setHorizontalAlignment(1);
    h1.setGrayFill(0.7f);
    h1.setColspan(1);
    tabla.addCell(h1);

    PdfPCell h2 = new PdfPCell(new Phrase("FECHA", fontCabecera));
    h2.setHorizontalAlignment(1);
    h2.setGrayFill(0.7f);
    h2.setColspan(1);
    tabla.addCell(h2);

    //        PdfPCell h8 = new PdfPCell(new Phrase("COMPENSA",fontCabecera));
    //        h8.setHorizontalAlignment(1);
    //        h8.setGrayFill(0.7f);
    //        h8.setColspan(1);
    //        tabla.addCell(h8);
    //        
    tabla.setHeaderRows(1);
    /**
     * Procesamiento de los datos para generar los registros de la entrada
     */

    Calendar cal = Calendar.getInstance();
    Calendar calC = Calendar.getInstance();
    for (String dni : dnis) {
        //cal.setTime(fechaInicio);
        for (int i = 0; i < listaInt.size(); i++) {
            cal.setTime(fechaInicio);
            int diaMarcacion = cal.get(Calendar.DAY_OF_MONTH) + i;
            System.out.println("Iterador: " + i + " Dni: " + dni);
            cal.set(Calendar.DAY_OF_MONTH, diaMarcacion);
            //Descartar si es sabado o domingo
            if (!ReporteUtil.isDiaLaboral(cal.getTime())) {
                continue;
            }
            //Marcaciones del dia a procesar
            List<Marcacion> marcaciones = mc.buscarXFecha(dni, cal.getTime());
            String Asistencia = "";
            String Permiso = "";
            String Vacaciones = "";
            String marcacion = "";
            String marcacion2 = "";
            String condicion = "";
            String compensacion = "";
            Marcacion primeraMarcacion = new Marcacion();
            Marcacion ultimaMarcacion = new Marcacion();
            Empleado empleado = ec.buscarPorDni(dni);

            List<EmpleadoOpcionInfo> infoEmpleado = eoc.buscarTodos(Integer.parseInt(dni));
            if (!infoEmpleado.isEmpty()) {
                if (infoEmpleado.get(0).getSFieldValue5().equals("0")
                        || infoEmpleado.get(0).getSFieldValue5().equals("")
                        || infoEmpleado.get(0).getSFieldValue5().equals(" ")) {
                    condicion = "NORMAL";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("1")) {
                    condicion = "Exonerado";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("2")) {
                    condicion = "Designado";
                } else if (infoEmpleado.get(0).getSFieldValue5().equals("3")) {
                    condicion = "Otra sede";
                }
            } else {
                condicion = "Sin dato";
            }
            System.out.println("Condicion: " + condicion);
            //Datos de horario, jornada, empleado
            List<DetalleGrupoHorario> detallesGrupos = dc.buscarXEmpleado(empleado);
            if (condicion.equals("NORMAL")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    marcacion = primeraMarcacion.getHora().toString();
                    marcacion2 = ultimaMarcacion.getHora().toString();

                    if (!detallesGrupos.isEmpty()) {
                        DetalleGrupoHorario detalleGrupoEmpleado = detallesGrupos.get(0);
                        List<AsignacionHorario> asignaciones = ashc
                                .buscarXGrupo(detalleGrupoEmpleado.getGrupoHorario());
                        AsignacionHorario asignacionEmpleado = asignaciones.get(0);
                        Horario horarioEmpleado = asignacionEmpleado.getHorario();
                        Jornada jornadaEmpleado = horarioEmpleado.getJornada();

                        //Validacion de asistencia
                        if (primeraMarcacion.getHora().compareTo(ultimaMarcacion.getHora()) < 0) {
                            if ((primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) == 0
                                    || primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) < 0)
                                    && (ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) == 0
                                            || ultimaMarcacion.getHora()
                                                    .compareTo(jornadaEmpleado.getTurnoHS()) > 0)) {
                                Asistencia = "Asistencia Normal";
                                marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                continue;
                            } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                    && primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHE()) > 0) {
                                Asistencia = "Tardanza";
                                marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                continue;
                                //Marco falta en entrada y marco antes de tiempo salida
                            } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) > 0
                                    && ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) < 0) {
                                Asistencia = "Falta";
                                continue;
                                //Marco tarde entrada y marco antes de tiempo salida
                            } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                    && ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) < 0) {
                                Asistencia = "Falta";
                                continue;
                                //Marco tarde entrada y marco antes de tiempo salida??
                            } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) < 0
                                    && ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) > 0) {
                                Asistencia = "Falta";
                                marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                continue;
                                //Marco falta en la entrada y marco antes de tiempo salida
                            } else if (primeraMarcacion.getHora().compareTo(jornadaEmpleado.getTardanzaHE()) > 0
                                    && ultimaMarcacion.getHora().compareTo(jornadaEmpleado.getTurnoHS()) > 0) {
                                Asistencia = "Falta";
                                marcacion2 = jornadaEmpleado.getTurnoHS().toString();
                                continue;
                            }
                        } else {
                            Asistencia = "Falta";

                        }
                    } else {
                        Asistencia = "No tiene grupo horario";
                        if (primeraMarcacion.getHora().compareTo(ultimaMarcacion.getHora()) < 0) {
                            continue;
                        }
                    }
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = "Falta";
                }
            } else if (condicion.equals("Exonerado")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                }
                break;
            } else if (condicion.equals("Designado")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                }
                break;
            } else if (condicion.equals("Otra sede")) {
                if (!marcaciones.isEmpty()) {
                    primeraMarcacion = marcaciones.get(0);
                    ultimaMarcacion = marcaciones.get(marcaciones.size() - 1);
                    //marcacion = primeraMarcacion.getHora().toString();
                    //marcacion2 = ultimaMarcacion.getHora().toString();
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                } else {
                    marcacion = "---";
                    marcacion2 = "---";
                    Asistencia = condicion;
                }
                break;
            } else {
                marcacion = "---";
                marcacion2 = "---";
                Asistencia = "Condicin sin especificar";
            }

            //Validacion de permiso
            //Procesar permisos con horas tbm si no encuentra permisos por fechas 
            AsignacionPermiso asignacionPermisoEmpleadoDia = aspc.buscarXDia(dni, cal.getTime());
            Calendar horaESinCero = Calendar.getInstance();
            Calendar horaFSinCero = Calendar.getInstance();
            if (primeraMarcacion.getHora() != null) {
                horaESinCero.setTime(primeraMarcacion.getHora());
                horaESinCero.set(Calendar.SECOND, 0);
            }
            if (ultimaMarcacion.getHora() != null) {
                horaFSinCero.setTime(ultimaMarcacion.getHora());
                horaFSinCero.set(Calendar.SECOND, 0);
            }

            AsignacionPermiso asigPerEntrada = aspc.buscarOnlyHora(dni, horaESinCero.getTime(), cal.getTime());
            AsignacionPermiso asigPerSalida = aspc.buscarOnlyHora(dni, horaFSinCero.getTime(), cal.getTime());
            if (asignacionPermisoEmpleadoDia != null) {
                Permiso = asignacionPermisoEmpleadoDia.getPermiso().getTipoPermiso().getNombre().toLowerCase();
                Asistencia = "Permiso";
                continue;
            } else if (asigPerEntrada != null) {
                Permiso = asigPerEntrada.getPermiso().getTipoPermiso().getNombre().toLowerCase();
                Asistencia = "Permiso";
                continue;
            } else if (asigPerSalida != null) {
                Permiso = asigPerSalida.getPermiso().getTipoPermiso().getNombre().toLowerCase();
                Asistencia = "Permiso";
                continue;
            } else {
                Permiso = "";
            }
            //Validacion de Vacaciones
            Vacacion vacacionEmpleado = vc.buscarXDia(dni, cal.getTime());
            if (vacacionEmpleado != null) {
                Vacaciones = ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaInicio()) + " al "
                        + ReporteUtil.obtenerFechaDiaMes(vacacionEmpleado.getFechaFin());
                Asistencia = "Vacaciones";
                continue;
            } else {
                Vacaciones = "";
            }
            //DNI
            PdfPCell celdaNombre = new PdfPCell(new Phrase(empleado.getNroDocumento(), fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);
            //Nombre
            String celda0 = empleado.getApellidoPaterno() + " " + empleado.getApellidoMaterno() + " "
                    + empleado.getNombre();
            celdaNombre.setPhrase(new Phrase(celda0, fontCelda));
            celdaNombre.setHorizontalAlignment(0);
            tabla.addCell(celdaNombre);
            //Fecha
            String celdaA = ReporteUtil.obtenerFechaFormateada(cal.getTime(), "/");
            celdaNombre.setPhrase(new Phrase(celdaA, fontCelda));
            celdaNombre.setHorizontalAlignment(1);
            tabla.addCell(celdaNombre);

        }
    }
    return tabla;
}

From source file:vistas.reportes.procesos.rptTardanzaTotal.java

public void crearPdf(String nombreFile, List<String> dnis, Date fechaInicio, Date fechaFin, String oficina,
        String tipo, String usuario) throws IOException, DocumentException {
    Document documento = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(documento, new FileOutputStream(nombreFile));
    documento.open();// w  w w .j  a  va  2  s. c  o  m
    Image cabecera = Image.getInstance("img/cabecera.png");
    cabecera.setAlignment(1);
    documento.add(cabecera);
    String nombreGrupoOficina = "";
    if (tipo == "O") {
        nombreGrupoOficina = "OFICINA: ";
    } else {
        nombreGrupoOficina = "GRUPO HORARIO: ";
    }
    Font font = new Font(Font.TIMES_ROMAN, 10, Font.BOLD);
    Chunk nombreReporte = new Chunk("REPORTE DE CONSOLIDADO DE TARDANZA", font);
    Chunk labelOficina = new Chunk(nombreGrupoOficina, font);
    Chunk labelMes = new Chunk("MES: ", font);
    Chunk labelUsuario = new Chunk("USUARIO: ", font);

    Chunk nombreOficina = new Chunk(oficina, new Font(Font.TIMES_ROMAN, 10));
    Chunk nombreMes = new Chunk(ReporteUtil.obtenerNombreMes(fechaInicio).toUpperCase(),
            new Font(Font.TIMES_ROMAN, 10));
    Chunk nombreUsuario = new Chunk(usuario.toUpperCase(), new Font(Font.TIMES_ROMAN, 10));

    documento.add(new Paragraph(nombreReporte));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelOficina, nombreOficina)));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelMes, nombreMes)));
    documento.add(ReporteUtil.darEspaciado(15));
    documento.add(new Paragraph(ReporteUtil.unirChunks(labelUsuario, nombreUsuario)));
    documento.add(ReporteUtil.darEspaciado(20));
    PdfPTable tabla = new rptTardanzaTotal().crearTabla(dnis, fechaInicio, fechaFin);
    documento.add(tabla);
    documento.close();
    try {
        File path = new File(nombreFile);
        Desktop.getDesktop().open(path);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

From source file:vistas.reportes.procesos.rptTardanzaTotal.java

public PdfPTable crearTabla(List<String> dnis, Date fechaInicio, Date fechaFin) throws DocumentException {
    /**// www.  j  a  v a  2s .co m
     * Procesamiento para info para generar tablas
     */
    //List<RegistroAsistencia> registros = rg.buscarXEmpleadoXFecha1(dnis, fechaInicio, fechaFin);
    Calendar fechaInicioC = Calendar.getInstance();
    Calendar fechaFinC = Calendar.getInstance();
    fechaInicioC.setTime(fechaInicio);
    fechaFinC.setTime(fechaFin);

    // Dias contados desde un inicio y fin fecha
    ArrayList<Integer> listaDias = new ArrayList<>();

    while (fechaInicioC.getTime().compareTo(fechaFinC.getTime()) <= 0) {
        if (!ReporteUtil.isDiaLaboral(fechaInicioC.getTime())) {
            fechaInicioC.add(Calendar.DATE, 1);
            continue;
        }
        listaDias.add(fechaInicioC.get(Calendar.DATE));
        fechaInicioC.add(Calendar.DATE, 1);
    }
    System.out.println("Numero de dias a agregar: " + listaDias.size());
    for (Integer listaDia : listaDias) {
        System.out.println("Dia numero: " + listaDia);
    }
    /**
     * Procesamiento para elaborar tabla con datos
     */
    //agrege una columna mas (Descuento sin goce)
    int nroColumnas = listaDias.size() + 5;
    PdfPTable tabla = new PdfPTable(nroColumnas);
    tabla.setWidthPercentage(100);
    //Asignamos los tamaos a las columnas 
    //MOdifique para tomar en cuenta la nueva columna de dewscuento
    int[] widthColumna = new int[nroColumnas];
    for (int i = 0; i < nroColumnas; i++) {
        if (i == 0) {
            widthColumna[i] = 6;
        } else if (i == (nroColumnas - 1) || i == (nroColumnas - 2) || i == (nroColumnas - 3)
                || i == (nroColumnas - 4)) {
            widthColumna[i] = 2;
        } else {
            widthColumna[i] = 1;
        }
    }
    tabla.setWidths(widthColumna);
    //Definimos celdas iniciales
    Font fontCabecera = new Font(Font.TIMES_ROMAN, 10, Font.BOLD);
    Font fontCelda = new Font(Font.TIMES_ROMAN, 9);
    PdfPCell h1 = new PdfPCell(new Phrase("Nombre del empleado", fontCabecera));
    h1.setHorizontalAlignment(3);
    h1.setGrayFill(0.7f);
    h1.setRowspan(2);
    h1.setColspan(1);
    tabla.addCell(h1);

    PdfPCell h2 = new PdfPCell(new Phrase("Das Hbiles", fontCabecera));
    h2.setHorizontalAlignment(1);
    h2.setGrayFill(0.7f);
    h2.setColspan(nroColumnas - 5);
    tabla.addCell(h2);

    PdfPCell h3 = new PdfPCell(new Phrase("Minutos Tardanza", fontCabecera));
    h3.setHorizontalAlignment(3);
    h3.setGrayFill(0.7f);
    h3.setColspan(1);
    h3.setRowspan(2);
    tabla.addCell(h3);

    //Agregado de columna de descuento sin goce
    PdfPCell h4 = new PdfPCell(new Phrase("Faltas", fontCabecera));
    h4.setHorizontalAlignment(3);
    h4.setGrayFill(0.7f);
    h4.setColspan(1);
    h4.setRowspan(2);
    tabla.addCell(h4);

    PdfPCell h5 = new PdfPCell(new Phrase("Licencias S.G", fontCabecera));
    h5.setHorizontalAlignment(3);
    h5.setGrayFill(0.7f);
    h5.setColspan(1);
    h5.setRowspan(2);
    tabla.addCell(h5);

    PdfPCell h6 = new PdfPCell(new Phrase("Descuento Total", fontCabecera));
    h6.setHorizontalAlignment(3);
    h6.setGrayFill(0.7f);
    h6.setColspan(1);
    h6.setRowspan(2);
    tabla.addCell(h6);

    PdfPCell diaColumna = new PdfPCell();
    for (int i = 0; i < (nroColumnas - 5); i++) {
        String celda = (listaDias.get(i).toString());
        diaColumna.setPhrase(new Phrase(celda, fontCabecera));
        diaColumna.setHorizontalAlignment(1);
        tabla.addCell(diaColumna);
    }

    Calendar cal = Calendar.getInstance();
    List<ReporteAsistenciaBean> listaAsistencia = rac.analisisAsistencia(fechaInicio, fechaFin, dnis, false,
            false);
    List<Integer> conteoDias = new ArrayList<>();
    int minutosTarde = 0;
    int minutosDescuentoPermisos = 0;
    int diasDescuento = 0;
    boolean banderaNombre = true;

    PdfPCell celdaNombre = new PdfPCell();
    for (String dni : dnis) {
        List<ReporteAsistenciaBean> registrosDni = new ArrayList<>();
        for (ReporteAsistenciaBean registro : listaAsistencia) {
            if (dni.equals(registro.getDni())) {
                registrosDni.add(registro);
            }
        }

        for (ReporteAsistenciaBean registro : registrosDni) {
            if (banderaNombre) {
                if (dni.equals(registro.getDni())) {
                    celdaNombre.setPhrase(new Phrase(registro.getNombre(), fontCelda));
                    celdaNombre.setHorizontalAlignment(0);
                    tabla.addCell(celdaNombre);
                    banderaNombre = false;
                }
            }
            for (Integer dia : listaDias) {
                cal.setTime(registro.getFechaRegistro());
                if (cal.get(Calendar.DAY_OF_MONTH) == dia) {
                    if (!registro.getEstado().equals("FALTA")) {
                        if (registro.getMinTardanza() != null) {
                            int numero = registro.getMinTardanza();
                            String celda = "" + numero;
                            celdaNombre.setPhrase(new Phrase(celda, fontCelda));
                            celdaNombre.setHorizontalAlignment(1);
                            tabla.addCell(celdaNombre);
                            minutosTarde += registro.getMinTardanza();
                        }
                    } else if (registro.getEstado().equals("FALTA")) {
                        if (registro.getMinTardanza() != null) {
                            int numero = registro.getMinTardanza();
                            String celda = "" + numero;
                            celdaNombre.setPhrase(new Phrase(celda, fontCelda));
                            celdaNombre.setHorizontalAlignment(1);
                            tabla.addCell(celdaNombre);
                            diasDescuento += 1;
                        }
                    }

                    conteoDias.add(dia);
                    break;
                } else {
                    if (conteoDias.contains(dia)) {

                    } else {
                        String celda = "n.r";
                        celdaNombre.setPhrase(new Phrase(celda, fontCelda));
                        celdaNombre.setHorizontalAlignment(1);
                        tabla.addCell(celdaNombre);
                        conteoDias.add(dia);
                    }
                }
            }
        }

        //Minutos tarde
        String hora1 = "";
        if (minutosTarde < 60) {
            hora1 = minutosTarde + " min";
        } else if (minutosTarde >= 60 && minutosTarde < 480) {
            int resto = minutosTarde % 60;
            int totalH = (minutosTarde - resto) / 60;
            hora1 = totalH + " h " + resto + " min";
        } else if (minutosTarde >= 480) {
            int restoHoras = minutosTarde % 480;
            int totalD = (minutosTarde - restoHoras) / 480;
            int restoMinutos = restoHoras % 60;
            int totalH = (restoHoras - restoMinutos) / 60;
            hora1 = totalD + " d " + totalH + " h " + restoMinutos + " m";
        }
        celdaNombre.setPhrase(new Phrase(hora1, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Dias con falta
        String hora2 = "";
        int minutosT = diasDescuento * 480;
        if (minutosT < 60) {
            hora2 = minutosT + " min";
        } else if (minutosT >= 60 && minutosT < 480) {
            int resto = minutosT % 60;
            int totalH = (minutosT - resto) / 60;
            hora2 = totalH + " h " + resto + " min";
        } else if (minutosT >= 480) {
            int restoHoras = minutosT % 480;
            int totalD = (minutosT - restoHoras) / 480;
            int restoMinutos = restoHoras % 60;
            int totalH = (restoHoras - restoMinutos) / 60;
            hora2 = totalD + " d " + totalH + " h " + restoMinutos + " m";
        }
        celdaNombre.setPhrase(new Phrase(hora2, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Licencia sin goce
        minutosDescuentoPermisos = rac.minutosSinGocePorPermisos(dni, fechaInicio, fechaFin);

        String hora = "";
        if (minutosDescuentoPermisos < 60) {
            hora = minutosDescuentoPermisos + " min";
        } else if (minutosDescuentoPermisos >= 60 && minutosDescuentoPermisos < 480) {
            int resto = minutosDescuentoPermisos % 60;
            int totalH = (minutosDescuentoPermisos - resto) / 60;
            hora = totalH + " h " + resto + " min";
        } else if (minutosDescuentoPermisos >= 480) {
            int restoHoras = minutosDescuentoPermisos % 480;
            int totalD = (minutosDescuentoPermisos - restoHoras) / 480;
            int restoMinutos = restoHoras % 60;
            int totalH = (restoHoras - restoMinutos) / 60;
            hora = totalD + " d " + totalH + " h " + restoMinutos + " m";
        }
        celdaNombre.setPhrase(new Phrase(hora, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);
        //Total
        String horaT = "";
        int tiempoTotal = minutosTarde + minutosT + minutosDescuentoPermisos;
        if (tiempoTotal < 60) {
            horaT = tiempoTotal + " min";
        } else if (tiempoTotal >= 60 && tiempoTotal < 480) {
            int resto = tiempoTotal % 60;
            int totalH = (tiempoTotal - resto) / 60;
            horaT = totalH + " h " + resto + " min";
        } else if (tiempoTotal >= 480) {
            int restoHoras = tiempoTotal % 480;
            int totalD = (tiempoTotal - restoHoras) / 480;
            int restoMinutos = restoHoras % 60;
            int totalH = (restoHoras - restoMinutos) / 60;
            horaT = totalD + " d " + totalH + " h " + restoMinutos + " m";
        }
        celdaNombre.setPhrase(new Phrase(horaT, fontCelda));
        celdaNombre.setHorizontalAlignment(1);
        tabla.addCell(celdaNombre);

        registrosDni.clear();
        banderaNombre = true;
        minutosTarde = 0;
        minutosDescuentoPermisos = 0;
        minutosT = 0;
        diasDescuento = 0;
    }
    return tabla;
}

From source file:webBoltOns.server.reportWriter.JRivetWriter.java

License:Open Source License

/**
 * <h2><code>buildReportTitles</code></h2>
 * //  ww  w . j  a  v  a  2s  .co m
 * <p>
 *  Create the report headings        
 * </p>
 * 
 * @param   DataSet reportTable - the report data object
 * 
 */
private void buildReportTitles(DataSet reportTable)
        throws DocumentException, BadElementException, MalformedURLException, IOException {

    Paragraph title = new Paragraph();

    title.add(Image.getInstance(dataAccess.getImagePath() + "reportLogo.gif"));
    title.add(new Chunk(
            new SimpleDateFormat("                           " + "hh:mm:ss - dd MMM yyyy").format(new Date()),
            FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL)));

    title.add(new Chunk("           " + reportTable.getStringField(ReportColumn.REPORT_TITLE),
            FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD)));

    HeaderFooter header = new HeaderFooter(title, false);
    header.setBorder(0);

    HeaderFooter footer = new HeaderFooter(
            new Phrase("page:", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL)), true);
    footer.setAlignment(HeaderFooter.ALIGN_CENTER);

    document.setHeader(header);
    document.setFooter(footer);

    reportColumns = reportTable.getTableVector(ReportColumn.REPORT_DETAILS).toArray();

    topA = new ReportAccumulator(this, -1, reportColumns.length);
    bottomA = topA;

    reportBody = new PdfPTable(reportColumns.length);
    reportBody.setTotalWidth(1.100f);
    reportBody.setHeaderRows(1);

    float cW[] = new float[reportColumns.length];

    for (int c = 0; c < reportColumns.length; c++) {
        ReportColumn column = (ReportColumn) reportColumns[c];
        if (column.getLevelBreak() > 0) {
            ReportAccumulator r = new ReportAccumulator(this, c, reportColumns.length);
            bottomA.setChildAccumulator(r);
            r.setParentAccumulator(bottomA);
            column.setAccumulator(r);
            bottomA = r;
        }

        PdfPCell hdr = new PdfPCell(new Paragraph(column.getDescription(),
                FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD)));

        hdr.setBorder(Rectangle.BOTTOM);
        if (column.getAlignment().equals(ReportColumn.LEFT))
            hdr.setHorizontalAlignment(Cell.ALIGN_LEFT);
        else if (column.getAlignment().equals(ReportColumn.RIGHT))
            hdr.setHorizontalAlignment(Cell.ALIGN_RIGHT);
        else
            hdr.setHorizontalAlignment(Cell.ALIGN_CENTER);

        reportBody.addCell(hdr);
        cW[c] = (float) column.getLength();
    }
    reportBody.setWidths(cW);
}

From source file:za.co.equalpay.web.utils.PDFExportUtility.java

/**
 * Perform the standard PDF PreProcessing: <br>
 * Add Customer logo image and Phrase as header to the first page, <br>
 * Add Line Separator to the bottom of the Image <br>
 * and add the standard footer message to the PDF document<br>
 *
 * @throws MalformedURLException/*from   w w w.j  ava2  s.  c om*/
 * @throws IOException
 * @throws DocumentException
 */
public void preProcess() throws MalformedURLException, IOException, DocumentException {
    document.setMargins(50f, 50f, 10f, 20f);

    BaseFont bf_helv = BaseFont.createFont(BaseFont.HELVETICA, "Cp1252", false);
    // Font font = new Font(bf_helv, 8);

    ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext()
            .getContext();

    String fontPath = LogoPathFinder.getFontPath(servletContext, "Tahoma");
    BaseFont bf = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, true);
    Font tahoma = new Font(bf, 16, Font.BOLD);
    tahoma.setColor(Color.GRAY);

    Font fontBold = new Font(bf, 8, Font.BOLD);
    fontBold.setColor(Color.GRAY);

    Font f = new Font(bf, 8, Font.NORMAL);
    f.setColor(Color.GRAY);

    Font sf = new Font(bf, 6, Font.NORMAL);
    sf.setColor(Color.LIGHT_GRAY);

    // image.setIndentationLeft(360f);
    // PdfPCell imgCell = new PdfPCell(image, false);
    // imgCell.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
    // imgCell.setBorder(0);
    //
    // PdfPCell emptyCell = new PdfPCell(new Phrase("TESTING...", tahoma));
    // emptyCell.setBorder(0);
    // PdfPTable footerTable = new PdfPTable(1);
    // footerTable.setWidthPercentage(100);
    //
    //
    // phrase = new Phrase(PDF_FOOTER_MESSAGE, f);
    //
    // PdfPCell cell = new PdfPCell(phrase);
    // cell.setBorder(0);
    // footerTable.addCell(cell);
    // table.setWidths(new int[] { 1, 2 });
    // table.addCell(emptyCell);
    // footerTable.addCell(emptyCell);
    // phrase.add(footerTable);
    // phrase.add(new Chunk(image, 475f, 0));
    // Phrase subPhrase = new Phrase();
    // subPhrase.add(new Phrase("\nwww.meddev.co.za\n", sf));
    // subPhrase.add(new Phrase(PDF_FOOTER_MESSAGE, f));
    // phrase.add(subPhrase);
    // phrase.add(new Chunk("www.meddev.co.za", f));
    // phrase.add(new Phrase(PDF_FOOTER_MESSAGE, f));
    // load document footer
    HeaderFooter footer = new HeaderFooter(new Phrase(PDF_FOOTER_MESSAGE, f), false);
    // HeaderFooter footer = new HeaderFooter(paragraph, false);
    // HeaderFooter footer = new HeaderFooter(phrase, false);

    footer.setAlignment(Element.ALIGN_LEFT);
    footer.setBorder(Rectangle.NO_BORDER);
    document.setFooter(footer);

    // document.open();
    //
    // ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // PdfWriter writer = PdfWriter.getInstance(document, baos);
    //
    // writer.open();
    // PdfContentByte cb = writer.getDirectContent();
    // cb.addImage(image);
    // ColumnText columnText = new ColumnText(cb);
    // load the customer logo
    String logoPath = LogoPathFinder.getPath(servletContext, "meddev-logo2");

    Image image = Image.getInstance(logoPath);
    image.scaleToFit(149, 55);
    image.setIndentationLeft(360f);

    PdfPCell imageCell = new PdfPCell(image, false);
    imageCell.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
    imageCell.setBorder(0);

    PdfPCell headerTextCell = new PdfPCell(new Phrase(header, tahoma));
    headerTextCell.setBorder(0);

    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100);
    table.setWidths(new int[] { 1, 2 });
    table.addCell(headerTextCell);
    table.addCell(imageCell);

    phrase = new Phrase();
    phrase.add(table);

    // load document header
    HeaderFooter header = new HeaderFooter(phrase, false);
    header.setAlignment(Element.ALIGN_CENTER);
    header.setBorder(Rectangle.NO_BORDER);

    document.setHeader(header);

    // create gray line separator
    // Chunk lineSeparator = new Chunk(new LineSeparator(1, 100, Color.GRAY,
    // Element.ALIGN_CENTER, -2));
    // document.add(lineSeparator);
    Font headerFont = new Font(bf_helv, 9);
    // write the header lines for this statement
    phrase = new Phrase(12, "\n", headerFont);
    phrase.add("\n\n");

    // open the pdf document for editing
    document.open();
    document.setPageSize(PageSize.A4);

    // Meddev Information Block
    table = new PdfPTable(4);
    table.setWidthPercentage(100);

    // table.setWidths(new int[] { 25, 25, 30, 20 });
    Phrase phrase1 = new Phrase();
    phrase1.add(new Phrase("MED DEV cc", fontBold));
    phrase1.add(new Phrase("\nUNIT 10, THE CORNER", f));
    phrase1.add(new Phrase("\nc/o Theuns & Hilde Ave", f));
    phrase1.add(new Phrase("\nHennopspark, 0157", f));
    phrase1.add(new Phrase("\nTel: +27 (0) 12 653 3063", f));
    phrase1.add(new Phrase("\nReg No: 2006/166603/23", f));
    phrase1.add(new Phrase("\n", f));

    Phrase phrase2 = new Phrase();
    phrase2.add(new Phrase("VAT No: ", fontBold));
    phrase2.add(new Phrase("4150231498", f));
    phrase2.add(new Phrase("\nImport/Export #: ", fontBold));
    phrase2.add(new Phrase("20544748", f));
    phrase2.add(new Phrase("\n", f));

    Phrase phrase3 = new Phrase();
    phrase3.add(new Phrase("QUOTE NO ", fontBold));
    phrase3.add(new Phrase("\nDATE ", fontBold));
    phrase3.add(new Phrase("\nREFERNCE ", fontBold));
    phrase3.add(new Phrase("\nSUPPLIER CODE ", fontBold));
    phrase3.add(new Phrase("\nEXPIRY DATE ", fontBold));

    Phrase phrase4 = new Phrase();
    //        phrase4.add(new Phrase(quotation.getQuotationNumber(), f));
    //        phrase4.add(new Phrase("\n" + DateFormatter.formatMonthDate(quotation.getQuotationDate()), f));
    //        phrase4.add(new Phrase("\n" + (quotation.getClient().getReference() == null ? "-" : quotation.getClient().getReference()), f));
    //        phrase4.add(new Phrase("\nMEDDEV1", f));
    //        phrase4.add(new Phrase("\n" + DateFormatter.formatMonthDate(quotation.calculateExpiryDate()), f));

    PdfPCell cell1 = new PdfPCell(phrase1);
    cell1.setBorder(0);
    PdfPCell cell2 = new PdfPCell(phrase2);
    cell2.setBorder(0);
    PdfPCell cell3 = new PdfPCell(phrase3);
    cell3.setBorder(0);
    PdfPCell cell4 = new PdfPCell(phrase4);
    cell4.setBorder(0);

    table.addCell(cell1);
    table.addCell(cell2);
    table.addCell(cell3);
    table.addCell(cell4);

    phrase.add(table);

    // create gray line separator
    Chunk lineSeparator = new Chunk(new LineSeparator(1, 100, Color.GRAY, Element.ALIGN_CENTER, -2));
    phrase.add(lineSeparator);

    // Customer Information Block
    table = new PdfPTable(3);
    table.setWidthPercentage(100);
    table.setWidths(new int[] { 5, 2, 3 });

    //        Phrase phrase11 = new Phrase();
    //        phrase11.add(new Phrase(quotation.getClient().getCompany().toUpperCase() + "(CLIENT)", fontBold));
    //        if (quotation.getClient().getVatRegNo() != null && quotation.getClient().getVatRegNo().trim().length() > 0) {
    //            phrase11.add(new Phrase("\nCustomer VAT No: ", fontBold));
    //            phrase11.add(new Phrase(quotation.getClient().getVatRegNo(), f));
    //        }
    //        if (quotation.getClient().getResAddress1() != null && quotation.getClient().getResAddress1().trim().length() > 0) {
    //            phrase11.add(new Phrase("\n" + quotation.getClient().getResAddress1(), f));
    //        }
    //        if (quotation.getClient().getResAddress2() != null && quotation.getClient().getResAddress2().trim().length() > 0) {
    //            phrase11.add(new Phrase("\n" + quotation.getClient().getResAddress2(), f));
    //        }
    //        if (quotation.getClient().getResCity() != null && quotation.getClient().getResCity().trim().length() > 0) {
    //            phrase11.add(new Phrase("\n" + quotation.getClient().getResCity(), f));
    //        }
    //        if (quotation.getClient().getPhone() != null && quotation.getClient().getPhone().trim().length() > 0) {
    //            phrase11.add(new Phrase("\nTel: " + quotation.getClient().getPhone(), f));
    //        }

    //PdfPCell cell11 = new PdfPCell(phrase11);
    //cell11.setBorder(0);

    phrase2 = new Phrase();
    phrase2.add(new Phrase("CURRENCY: ", fontBold));
    PdfPCell cell12 = new PdfPCell(phrase2);
    cell12.setBorder(0);

    phrase3 = new Phrase();
    //phrase3.add(new Phrase(quotation.getClient().getCurrencyCode(), f));
    PdfPCell cell13 = new PdfPCell(phrase3);
    cell13.setBorder(0);

    // table.addCell(cell11);
    table.addCell(cell12);
    table.addCell(cell13);

    phrase.add(table);

    // create gray line separator
    phrase.add("\n");
    document.add(phrase);

    String footerImagePath = LogoPathFinder.getPath(servletContext, "footer-image");

    Image footerImage = Image.getInstance(footerImagePath);
    footerImage.scaleToFit(90, 50);
    footerImage.setAbsolutePosition((PageSize.A4.getWidth() - (footerImage.getScaledWidth() + 40)),
            (PageSize.A4.getHeight() - (PageSize.A4.getHeight() - (footerImage.getScaledHeight() - 10))));

    document.add(footerImage);

}

From source file:za.co.equalpay.web.utils.PDFExportUtility.java

public void postProcess() throws MalformedURLException, IOException, DocumentException {
    // document.open();
    ///* w  w  w  . j  a  v a  2 s  . c  o  m*/
    // ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // PdfWriter writer = PdfWriter.getInstance(document, baos);
    //
    // writer.open();
    // PdfContentByte cb = writer.getDirectContent();
    // cb.addImage(image);

    ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext()
            .getContext();

    String fontPath = LogoPathFinder.getFontPath(servletContext, "Tahoma");
    BaseFont bf = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, true);
    Font tahoma = new Font(bf, 16, Font.BOLDITALIC);
    tahoma.setColor(Color.GRAY);

    Font boldFont8 = new Font(bf, 8, Font.BOLD, Color.GRAY);
    Font normalFont8 = new Font(bf, 8, Font.NORMAL, Color.GRAY);

    Font boldFont10 = new Font(bf, 10, Font.BOLDITALIC, Color.GRAY);
    Font normalFont10 = new Font(bf, 10, Font.ITALIC, Color.GRAY);

    phrase = new Phrase();
    phrase.add(new Phrase("Exclusive Distributors of ", normalFont10));
    phrase.add(new Phrase("SAM Medical, CONTERRA, TACMED Solutions ", boldFont10));
    phrase.add(new Phrase("and ", normalFont10));
    phrase.add(new Phrase("NARP ", boldFont10));
    phrase.add(new Phrase("in South Africa.", normalFont10));

    Paragraph paragraph = new Paragraph(phrase);
    paragraph.setAlignment(Paragraph.ALIGN_CENTER);

    document.add(paragraph);

    PdfPTable table = new PdfPTable(1);
    table.setWidthPercentage(100);

    // Terms & Conditions
    phrase = new Phrase();
    phrase.add(new Phrase("\n\n\n"));
    phrase.add(new Phrase("Terms and Conditions: ", boldFont8));
    phrase.add(new Phrase("\n"));
    phrase.add(new Phrase(
            "\n1.    Full Payment in Advance, unless arranged otherwise. Orders will only be processed once payment reflects in our Bank Account.",
            normalFont8));
    phrase.add(new Phrase("\n2.    Prices are net.", normalFont8));
    phrase.add(new Phrase("\n3.    Delivery will be ex stock, alternatively 4  6 weeks from date of order.",
            normalFont8));
    phrase.add(
            new Phrase("\n4.    Shipping Lead Time will depend on clients mode of Transport.", normalFont8));
    phrase.add(new Phrase("\n5.    Prices and Supply of Goods are Subject to availability of stock.",
            normalFont8));
    phrase.add(new Phrase("\n6.    Prices are subject to exchange rate and brand.", normalFont8));
    phrase.add(new Phrase("\n7.    Quotation is valid for 30 Days", boldFont8));
    phrase.add(new Phrase(
            "\n8.    All capital equipment carries a one year guarantee against defective material and workmanship",
            normalFont8));
    phrase.add(new Phrase("\n9.    E & OA accepted.", normalFont8));
    phrase.add(new Phrase("\n10.  Excluding Postage, Packaging or Freight Forwarding to relevant Country.",
            normalFont8));

    PdfPCell cell = new PdfPCell(phrase);
    cell.setBorder(0);
    table.addCell(cell);

    document.add(table);
}