Problem with pdf reports in jsp system

0

I have a JSP system that generates reports with the iext library. The problem is that in one of the pages of the system it does not have the background color in certain specific cells, while the other page does. I've already tried to put cell.setbackground in the same code, but even then the reports on that specific page do not change.

The report of the activity page appears to me like this:

And the one in profile looks like this:

And this is the code of the class that generates the profile report:

package creo.more.perfil.dao;

import java.io.FileOutputStream;
import java.util.ArrayList;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import creo.more.administracion.dao.ConsultaPreguntas;
import creo.more.entidades.Actor;
import creo.more.entidades.ActorItem;
import creo.more.entidades.ActorPregunta;
import creo.more.entidades.Atributo;
import creo.more.entidades.Caracterizacion;
import creo.more.entidades.CategoriaVariable;
import creo.more.entidades.Grupo;
import creo.more.entidades.Item;
import creo.more.entidades.Pregunta;
import creo.more.entidades.Subgrupo;
import creo.more.entidades.ValorAtributo;
import creo.more.entidades.Variable;
import creo.more.personalizacion.dao.ConsultaActor;
import creo.more.personalizacion.dao.ConsultaGrupo;

public class GeneradorReportePDF {
private Font fuenteTitulo = new Font(Font.FontFamily.UNDEFINED, 17, Font.BOLD);
private Font fuenteSubtitulo = new Font(Font.FontFamily.UNDEFINED, 15, Font.BOLD);
private Font fuenteSubtitulo2 = new Font(Font.FontFamily.UNDEFINED, 14, Font.ITALIC);

/** genera un documento pdf con contenido relacionado a un actor*/
public void generarReporteActorPDF(String ruta, Integer idActor) {
    try {
        Document document = new Document(PageSize.A4.rotate(), -20f, -20f, 20f, 20f);
        PdfWriter.getInstance(document, new FileOutputStream(ruta));
        document.open();
        addMetaDataPDF(document);
        agregarDatosPerfilActor(document, idActor);
        document.close();

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

/** genera metadatos basicos al documento pdf*/
private void addMetaDataPDF(Document document) {
    document.addTitle("Reporte de perfil de Actor");
    document.addSubject("Reporte de perfil de Actor");
    document.addKeywords("creo, reporte, actor");
    document.addAuthor("CREO");
    document.addCreator("CREO");
}

/** agrega a un documento pdf contenido relacionado a un actor*/
private void agregarDatosPerfilActor(Document document, Integer idActor) throws DocumentException {
    Paragraph preface = null;

    ConsultaActor consultaActor = new ConsultaActor();
    Actor actor = consultaActor.consultarActor(idActor);

    ConsultaGrupo consultaGrupo = new ConsultaGrupo();
    Subgrupo subgrupo = consultaGrupo.consultarSubgrupo(actor.getIdSubgrupo());
    Grupo grupo = consultaGrupo.consultarGrupoActor(actor);

    ConsultaPreguntas consultaPreguntas = new ConsultaPreguntas();
    ConsultaRespuestasActor consultaRespuestasActor = new ConsultaRespuestasActor();
    ArrayList<ActorPregunta> respuestas = null;

    ConsultaPerfil consultaPerfil = new ConsultaPerfil();
    ArrayList<Variable> variables = consultaPerfil.consultarVariables();
    ArrayList<CategoriaVariable> categoriasVariable = null;
    ArrayList<Item> items = null;
    ActorItem actorItem = null;

    Pregunta pregunta = null;

    float[] medCeldaTitulo = { 5.75f };
    PdfPTable tablaTitulo = new PdfPTable(1);
    tablaTitulo.setWidths(medCeldaTitulo);
    PdfPCell celda = new PdfPCell(new Phrase("REPORTE DE PERFIL DE ACTOR", fuenteTitulo));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaTitulo.addCell(celda);
    document.add(tablaTitulo);

    preface = new Paragraph();
    preface.add(new Paragraph("\n"));
    document.add(preface);

    float[] medCeldasDatosBasicos = { 2.5f, 3.25f };
    PdfPTable tablaDatosBasicos = new PdfPTable(2);
    tablaDatosBasicos.setWidths(medCeldasDatosBasicos);

    celda = new PdfPCell(new Phrase("DATOS BASICOS", fuenteSubtitulo));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    celda.setColspan(2);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("ACTOR"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getOrganizacion()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("NOMBRE CONTACTO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getNombre()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("CARGO CONTACTO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getCargo()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("TELEFONO CONTACTO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getTelefono()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("EMAIL CONTACTO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getEmail()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("NOMBRE RESPONSABLE"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getNombreResponsable()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("NOMBRE RESPONSABLE 2"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getNombreResponsable2()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("CARGO RESPONSABLE"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getCargoResponsable()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("CARGO RESPONSABLE 2"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(actor.getCargoResponsable2()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("GRUPO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(grupo.getNombre()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase("SUBGRUPO"));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    celda = new PdfPCell(new Phrase(subgrupo.getNombre()));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    tablaDatosBasicos.addCell(celda);
    document.add(tablaDatosBasicos);

    preface = new Paragraph();
    preface.add(new Paragraph("\n"));
    document.add(preface);

    float[] medidaCeldas = { 2.5f, 3.25f };
    PdfPTable tablaRespuestas = new PdfPTable(2);
    tablaRespuestas.setWidths(medidaCeldas);

    celda = new PdfPCell(new Phrase("CARACTERIZACIÓN", fuenteSubtitulo));
    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
    celda.setColspan(2);
    tablaRespuestas.addCell(celda);

    ArrayList<Caracterizacion> caracterizaciones = consultaPreguntas.consultarCaracterizaciones();

    if(caracterizaciones!=null){
        for (int i = 0; i < caracterizaciones.size(); i++) {
            celda = new PdfPCell(new Phrase(caracterizaciones.get(i).getNombre().toUpperCase(),fuenteSubtitulo2));
            celda.setHorizontalAlignment(Element.ALIGN_CENTER);
            celda.setColspan(2);
            tablaRespuestas.addCell(celda);

            celda = new PdfPCell(new Phrase("PREGUNTA"));
            celda.setHorizontalAlignment(Element.ALIGN_CENTER);
            tablaRespuestas.addCell(celda);
            celda = new PdfPCell(new Phrase("RESPUESTA"));
            celda.setHorizontalAlignment(Element.ALIGN_CENTER);
            tablaRespuestas.addCell(celda);

            respuestas = consultaRespuestasActor.consultarRespuestasCaracterizacion(idActor,caracterizaciones.get(i).getId()); 

            if(respuestas!=null)
            for (int j = 0; j < respuestas.size(); j++) {
                if (!respuestas.get(j).getRespuesta().equals("")) {

                    pregunta = consultaPreguntas.consultarPregunta(respuestas.get(j).getIdPregunta());

                    celda = new PdfPCell(new Phrase(pregunta.getDescripcion().replace("<br>", "")));
                    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                    tablaRespuestas.addCell(celda);

                    celda = new PdfPCell(new Phrase(respuestas.get(j).getRespuesta()));
                    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                    tablaRespuestas.addCell(celda);

                }
            }

        }
    }

    document.add(tablaRespuestas);

    preface = new Paragraph();
    preface.add(new Paragraph("\n"));
    document.add(preface);

    for (int i = 1; i < 4; i++) {

        float[] medCeldasImpacto = { 2.5f, 3.25f };
        PdfPTable tablaImpacto = new PdfPTable(2);
        tablaImpacto.setWidths(medCeldasImpacto);

        celda = new PdfPCell(new Phrase(variables.get(i).getNombre().toUpperCase(), fuenteSubtitulo));
        celda.setHorizontalAlignment(Element.ALIGN_CENTER);
        celda.setColspan(2);
        tablaImpacto.addCell(celda);

        categoriasVariable = consultaPerfil.consultarCategoriasVariable(variables.get(i).getId());
        if (categoriasVariable != null)
            for (int j = 0; j < categoriasVariable.size(); j++) {

                items = consultaPerfil.consultarTodoItems(categoriasVariable.get(j).getId());
                if (items != null) {

                    ArrayList<Item> catItemsActor = consultaPerfil
                            .consultarItemsActor(categoriasVariable.get(j).getId(), idActor);

                    if (catItemsActor != null) {
                        celda = new PdfPCell(
                                new Phrase(categoriasVariable.get(j).getNombre().toUpperCase(), fuenteSubtitulo2));
                        celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                        celda.setColspan(2);
                        tablaImpacto.addCell(celda);

                        celda = new PdfPCell(new Phrase("NOMBRE ITEM"));
                        celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tablaImpacto.addCell(celda);

                        celda = new PdfPCell(new Phrase("VALORES"));
                        celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                        tablaImpacto.addCell(celda);

                        for (int k = 0; k < items.size(); k++) {
                            actorItem = consultaPerfil.consultarActorItem(idActor, items.get(k).getId());
                            if (actorItem != null) {
                                celda = new PdfPCell(new Phrase(items.get(k).getNombre()));
                                celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                                tablaImpacto.addCell(celda);

                                //Si es diferente de influencia entonces busque valores de item
                                if (i!=2) {
                                    String[] valoresItem = actorItem.getValores().split(",");
                                    String[] keyValue = null;
                                    String cadenaValores = "";
                                    for (int v = 0; v < valoresItem.length; v++) {
                                        keyValue = valoresItem[v].split(":");
                                        Atributo atributo = consultaPerfil
                                                .consultarAtributo(Integer.parseInt(keyValue[0]));
                                        ValorAtributo valorAtrubuto = consultaPerfil
                                                .consultarValorAtributo(Integer.parseInt(keyValue[1]));

                                        cadenaValores += "*" + atributo.getNombre() + ": "
                                                + valorAtrubuto.getNombre() + "\n";

                                    }

                                    celda = new PdfPCell(new Phrase(cadenaValores));
                                    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    tablaImpacto.addCell(celda);
                                }else{
                                    celda = new PdfPCell(new Phrase(actorItem.getValores()));
                                    celda.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    tablaImpacto.addCell(celda);
                                }
                            }
                        }
                    }
                }

            }

        document.add(tablaImpacto);

        preface = new Paragraph();
        preface.add(new Paragraph("\n"));
        document.add(preface);
    }

}

}
    
asked by GDCost 12.02.2018 в 20:24
source

0 answers