Example usage for com.itextpdf.text.pdf PdfPCell setBackgroundColor

List of usage examples for com.itextpdf.text.pdf PdfPCell setBackgroundColor

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfPCell setBackgroundColor.

Prototype


public void setBackgroundColor(final BaseColor backgroundColor) 

Source Link

Document

Sets the backgroundcolor of the rectangle.

Usage

From source file:org.cherchgk.actions.tournament.result.show.GetPDFTournamentResultAction.java

License:Apache License

public InputStream getDocument() throws DocumentException, IOException {
    Font normalFont = getNormalFont();
    Font boldFont = getBoldFont();

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    Document document = new Document();
    PdfWriter.getInstance(document, out);
    document.open();//  www .  j  av  a  2  s.c  om

    Paragraph tournamentNameParagraph = new Paragraph(tournament.getTitle(), boldFont);
    tournamentNameParagraph.setAlignment(Element.ALIGN_CENTER);
    document.add(tournamentNameParagraph);

    Paragraph tournamentDateParagraph = new Paragraph(tournament.getDateAsString(), boldFont);
    tournamentDateParagraph.setAlignment(Element.ALIGN_CENTER);
    document.add(tournamentDateParagraph);

    if (teamCategory != null) {
        Paragraph teamCategoryParagraph = new Paragraph(teamCategory.getTitle(), boldFont);
        teamCategoryParagraph.setAlignment(Element.ALIGN_CENTER);
        document.add(teamCategoryParagraph);
    }

    int numColumns = 3 + tournamentResult.getRankingAlgorithms().size();
    PdfPTable resultTable = new PdfPTable(numColumns);
    int[] widths = new int[numColumns];
    widths[0] = 1;
    widths[1] = 3;
    for (int i = 2; i < numColumns; i++) {
        widths[i] = 1;
    }
    resultTable.setWidths(widths);
    resultTable.setSpacingBefore(10f);

    PdfPCell cell = new PdfPCell(new Phrase("", boldFont));
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setColspan(2);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    resultTable.addCell(cell);

    for (RankingAlgorithm rankingAlgorithm : tournamentResult.getRankingAlgorithms()) {
        cell = new PdfPCell(new Phrase(rankingAlgorithm.getPointName(), boldFont));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        resultTable.addCell(cell);
    }

    cell = new PdfPCell(new Phrase("?", boldFont));
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    resultTable.addCell(cell);

    boolean showTeamCategoryInTable = (teamCategory == null) && !tournament.getTeamCategories().isEmpty();

    for (TournamentResult.TeamResult teamResult : tournamentResult.getTeamResultList()) {
        if (showTeamCategoryInTable) {
            if (teamResult.getTeam().getTeamCategory() != null) {
                cell = new PdfPCell(new Phrase(teamResult.getTeam().getTeamCategory().getTitle(), normalFont));
            } else {
                cell = new PdfPCell(new Phrase("", normalFont));
            }
            resultTable.addCell(cell);
        }
        cell = new PdfPCell(new Phrase(teamResult.getTeam().getName(), normalFont));
        if (!showTeamCategoryInTable) {
            cell.setColspan(2);
        }
        resultTable.addCell(cell);
        for (Map<Team, RankingPoint> m : tournamentResult.getRankingPointsList()) {
            cell = new PdfPCell(new Phrase(m.get(teamResult.getTeam()).toString(), normalFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            resultTable.addCell(cell);
        }
        cell = new PdfPCell(new Phrase(teamResult.getPlace(), normalFont));
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        resultTable.addCell(cell);
    }

    document.add(resultTable);
    document.close();

    return new ByteArrayInputStream(out.toByteArray());
}

From source file:org.inspira.condominio.pdf.DocumentoEgresos.java

private void agregarTablaEgresos(InformacionEgreso[] egresos) throws DocumentException {
    PdfPCell cell1 = new PdfPCell(new Phrase("Fecha", F_CELL_HEADER_TEXT));
    cell1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell1.setColspan(2);/*from  ww  w.  ja va2 s  . c  om*/
    cell1.setFixedHeight(20f);
    cell1.setBackgroundColor(new BaseColor(0xff009846));
    PdfPCell cell2 = new PdfPCell(new Phrase("Descripcin", F_CELL_HEADER_TEXT));
    cell2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell2.setColspan(6);
    cell2.setBackgroundColor(new BaseColor(0xff009846));
    cell2.setFixedHeight(20f);
    PdfPCell cell3 = new PdfPCell(new Phrase("Monto", F_CELL_HEADER_TEXT));
    cell3.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell3.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell3.setColspan(2);
    cell3.setBackgroundColor(new BaseColor(0xff009846));
    cell3.setFixedHeight(20f);
    PdfPCell cell4 = new PdfPCell(new Phrase("Pagado con", F_CELL_HEADER_TEXT));
    cell4.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell4.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell4.setColspan(2);
    cell4.setBackgroundColor(new BaseColor(0xff009846));
    cell4.setFixedHeight(20f);
    PdfPCell cell5 = new PdfPCell(new Phrase("Total", F_NORMAL));
    cell5.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
    cell5.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell5.setColspan(8);
    cell5.setFixedHeight(20f);
    PdfPCell cell6 = new PdfPCell();
    cell6.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell6.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell6.setColspan(4);
    cell6.setFixedHeight(20f);
    PdfPTable table = new PdfPTable(12);
    table.setWidthPercentage(100);
    table.addCell(cell1);
    table.addCell(cell2);
    table.addCell(cell3);
    table.addCell(cell4);
    float total = agregarEgresos(table, egresos);
    cell5.setBorder(Rectangle.RIGHT);
    table.addCell(cell5);
    cell6.setPhrase(new Phrase(String.format("%.2f pesos", total), F_NORMAL));
    table.addCell(cell6);
    documento.add(table);
}

From source file:org.inspira.condominio.pdf.DocumentoEstadoDeCuenta.java

private float setTableHeading(PdfPTable t1, Ingreso[] ingresos) {
    PdfPCell cConcepto = new PdfPCell(new Phrase("Concepto", F_CELL_HEADER_TEXT));
    cConcepto.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cConcepto.setColspan(3);/* w  ww  .j  a  v  a  2  s.  com*/
    cConcepto.setBackgroundColor(new BaseColor(0xff009846));
    t1.addCell(cConcepto);
    PdfPCell cFecha = new PdfPCell(new Phrase("Fecha", F_CELL_HEADER_TEXT));
    cFecha.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cFecha.setColspan(3);
    cFecha.setBackgroundColor(new BaseColor(0xff009846));
    t1.addCell(cFecha);
    PdfPCell cMonto = new PdfPCell(new Phrase("Monto", F_CELL_HEADER_TEXT));
    cMonto.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cMonto.setColspan(3);
    cMonto.setBackgroundColor(new BaseColor(0xff009846));
    t1.addCell(cMonto);
    PdfPCell concepto;
    PdfPCell monto;
    PdfPCell fecha;
    float total = 0;
    boolean isTenue = false;
    for (Ingreso ingreso : ingresos) {
        concepto = new PdfPCell();
        concepto.setColspan(3);
        concepto.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        if (isTenue) {
            concepto.setPhrase(
                    new Phrase(ingreso.getConceptoDeIngreso().getConceptoDeIngreso(), F_CELL_HEADER_TEXT));
            concepto.setBackgroundColor(new BaseColor(0xaa009846));
        } else {
            concepto.setPhrase(new Phrase(ingreso.getConceptoDeIngreso().getConceptoDeIngreso()));
        }
        t1.addCell(concepto);
        fecha = new PdfPCell();
        fecha.setColspan(3);
        fecha.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        if (isTenue) {
            fecha.setBackgroundColor(new BaseColor(0xaa009846));
            fecha.setPhrase(new Phrase(DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault())
                    .format(new Date(ingreso.getFecha())), F_CELL_HEADER_TEXT));
        } else {
            fecha.setPhrase(new Phrase(DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault())
                    .format(new Date(ingreso.getFecha()))));
        }
        t1.addCell(fecha);
        monto = new PdfPCell();
        monto.setColspan(3);
        monto.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
        if (isTenue) {
            monto.setBackgroundColor(new BaseColor(0xaa009846));
            monto.setPhrase(new Phrase(String.format("%.2f pesos", ingreso.getMonto()), F_CELL_HEADER_TEXT));
        } else {
            monto.setPhrase(new Phrase(String.format("%.2f pesos", ingreso.getMonto())));
        }
        t1.addCell(monto);
        total += ingreso.getMonto();
        isTenue = !isTenue;
        System.out.println("Total: " + total);
    }
    return total;
}

From source file:org.inspira.condominio.pdf.DocumentoIngreso.java

private float addTablaFormatoIngresos(InformacionIngresos infoIngresos) throws DocumentException {
    PdfPCell cellHeader1 = new PdfPCell(new Phrase("Ingresos Ordinarios", F_CELL_HEADER_TEXT));
    cellHeader1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cellHeader1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader1.setColspan(5);/*from www. j  a v a  2 s .  com*/
    cellHeader1.setFixedHeight(20f);
    cellHeader1.setBackgroundColor(new BaseColor(0xff009846));
    PdfPCell cellHeader2 = new PdfPCell(new Phrase("Monto", F_CELL_HEADER_TEXT));
    cellHeader2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cellHeader2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader2.setColspan(5);
    cellHeader2.setBackgroundColor(new BaseColor(0xff009846));
    cellHeader2.setFixedHeight(20f);
    PdfPCell cellHeader3 = new PdfPCell(new Phrase("En cuenta bancaria", F_NORMAL));
    cellHeader3.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cellHeader3.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader3.setColspan(5);
    cellHeader3.setFixedHeight(20f);
    PdfPCell cellHeader4 = new PdfPCell(
            new Phrase(String.format("%.2f pesos", infoIngresos.getMontoCuentaBancaria()), F_NORMAL));
    cellHeader4.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cellHeader4.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader4.setColspan(5);
    cellHeader4.setFixedHeight(20f);
    PdfPCell cellHeader5 = new PdfPCell(new Phrase("En caja de administracin", F_NORMAL));
    cellHeader5.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cellHeader5.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader5.setColspan(5);
    cellHeader5.setFixedHeight(20f);
    PdfPCell cellHeader6 = new PdfPCell(
            new Phrase(String.format("%.2f pesos", infoIngresos.getMontoEnCajaDeAdministracion()), F_NORMAL));
    cellHeader6.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cellHeader6.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader6.setColspan(5);
    cellHeader6.setFixedHeight(20f);
    PdfPCell cellHeader7 = new PdfPCell(new Phrase("Total", F_NORMAL));
    cellHeader7.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cellHeader7.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader7.setColspan(5);
    cellHeader7.setFixedHeight(20f);
    PdfPCell cellHeader8 = new PdfPCell(new Phrase(
            String.format("%.2f pesos",
                    infoIngresos.getMontoCuentaBancaria() + infoIngresos.getMontoEnCajaDeAdministracion()),
            F_NORMAL));
    cellHeader8.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cellHeader8.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cellHeader8.setColspan(5);
    cellHeader8.setFixedHeight(20f);
    PdfPTable table = new PdfPTable(10);
    table.setWidthPercentage(100);
    table.addCell(cellHeader1);
    table.addCell(cellHeader2);
    table.addCell(cellHeader3);
    table.addCell(cellHeader4);
    table.addCell(cellHeader5);
    table.addCell(cellHeader6);
    table.addCell(cellHeader7);
    table.addCell(cellHeader8);
    table.setSpacingBefore(3f);
    documento.add(table);
    return infoIngresos.getMontoCuentaBancaria() + infoIngresos.getMontoEnCajaDeAdministracion();
}

From source file:org.inspira.condominio.pdf.DocumentoIngreso.java

private void addTablaCobranza(InformacionIngresos infoIngresos) throws DocumentException {
    PdfPCell cell1 = new PdfPCell(new Phrase("Tipo de condminos", F_CELL_HEADER_TEXT));
    cell1.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell1.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell1.setColspan(6);//from  ww  w  . ja  v a  2 s.  c o  m
    cell1.setFixedHeight(20f);
    cell1.setBackgroundColor(new BaseColor(0xff009846));
    PdfPCell cell2 = new PdfPCell(new Phrase("Nmero", F_CELL_HEADER_TEXT));
    cell2.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell2.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell2.setColspan(2);
    cell2.setBackgroundColor(new BaseColor(0xff009846));
    cell2.setFixedHeight(20f);
    PdfPCell cell3 = new PdfPCell(new Phrase("Porcentaje", F_CELL_HEADER_TEXT));
    cell3.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell3.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell3.setColspan(2);
    cell3.setBackgroundColor(new BaseColor(0xff009846));
    cell3.setFixedHeight(20f);
    PdfPCell cell4 = new PdfPCell(new Phrase("Condminos que efectuaron su pago", F_NORMAL));
    cell4.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cell4.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell4.setColspan(6);
    cell4.setFixedHeight(20f);
    PdfPCell cell5 = new PdfPCell(new Phrase(String.valueOf(infoIngresos.getTotalRegulares()), F_NORMAL));
    cell5.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell5.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell5.setColspan(2);
    cell5.setFixedHeight(20f);
    PdfPCell cell6 = new PdfPCell(new Phrase(String.format("%.2f%%",
            ((float) infoIngresos.getTotalRegulares() / (float) infoIngresos.getTotalhabitantes()) * 100),
            F_NORMAL));
    cell6.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell6.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell6.setColspan(2);
    cell6.setFixedHeight(20f);
    PdfPCell cell7 = new PdfPCell(new Phrase("Condminos morosos", F_NORMAL));
    cell7.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cell7.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell7.setColspan(6);
    cell7.setFixedHeight(20f);
    PdfPCell cell8 = new PdfPCell(new Phrase(
            String.valueOf(infoIngresos.getTotalhabitantes() - infoIngresos.getTotalRegulares()), F_NORMAL));
    cell8.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell8.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell8.setColspan(2);
    cell8.setFixedHeight(20f);
    PdfPCell cell9 = new PdfPCell(new Phrase(String.format("%.2f%%",
            (((float) infoIngresos.getTotalhabitantes() - (float) infoIngresos.getTotalRegulares())
                    / (float) infoIngresos.getTotalhabitantes()) * 100),
            F_NORMAL));
    cell9.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell9.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell9.setColspan(2);
    cell9.setFixedHeight(20f);
    PdfPCell cell10 = new PdfPCell(new Phrase("Total", F_NORMAL));
    cell10.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
    cell10.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell10.setColspan(6);
    cell10.setFixedHeight(20f);
    PdfPCell cell11 = new PdfPCell(new Phrase(String.valueOf(infoIngresos.getTotalhabitantes()), F_NORMAL));
    cell11.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell11.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell11.setColspan(2);
    cell11.setFixedHeight(20f);
    PdfPCell cell12 = new PdfPCell(new Phrase("100%", F_NORMAL));
    cell12.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    cell12.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);
    cell12.setColspan(2);
    cell12.setFixedHeight(20f);
    PdfPTable table = new PdfPTable(10);
    table.setWidthPercentage(100);
    table.addCell(cell1);
    table.addCell(cell2);
    table.addCell(cell3);
    table.addCell(cell4);
    table.addCell(cell5);
    table.addCell(cell6);
    table.addCell(cell7);
    table.addCell(cell8);
    table.addCell(cell9);
    table.addCell(cell10);
    table.addCell(cell11);
    table.addCell(cell12);
    documento.add(table);
}

From source file:org.larz.dom4.editor.ReportGenerator.java

License:Open Source License

public static void generateReport(XtextEditor sourcePage, final Shell shell) {
    final IXtextDocument myDocument = ((XtextEditor) sourcePage).getDocument();
    myDocument.modify(new IUnitOfWork.Void<XtextResource>() {
        @Override/*from www . ja  v  a 2  s .c  om*/
        public void process(XtextResource resource) throws Exception {
            Map<String, Map<String, ModObject>> cellMap = new HashMap<String, Map<String, ModObject>>();

            Dom4Mod dom4Mod = (Dom4Mod) resource.getContents().get(0);
            EList<AbstractElement> elements = dom4Mod.getElements();
            for (AbstractElement element : elements) {
                if (element instanceof SelectArmorById || element instanceof SelectArmorByName) {
                    String name = getSelectArmorname((Armor) element);
                    if (name == null)
                        continue;
                    String id = getArmorid((Armor) element);

                    Map<String, ModObject> map = cellMap.get(ARMOR);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(ARMOR, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Armor) element, modObject.propertyMap);
                } else if (element instanceof NewArmor) {
                    String name = getArmorname((Armor) element);
                    String id = getArmorid((Armor) element);

                    Map<String, ModObject> map = cellMap.get(ARMOR);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(ARMOR, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Armor) element, modObject.propertyMap);
                } else if (element instanceof SelectWeaponById || element instanceof SelectWeaponByName) {
                    String name = getSelectWeaponname((Weapon) element);
                    String id = getWeaponid((Weapon) element);

                    Map<String, ModObject> map = cellMap.get(WEAPONS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(WEAPONS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Weapon) element, modObject.propertyMap);
                } else if (element instanceof NewWeapon) {
                    String name = getWeaponname((Weapon) element);
                    String id = getWeaponid((Weapon) element);

                    Map<String, ModObject> map = cellMap.get(WEAPONS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(WEAPONS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Weapon) element, modObject.propertyMap);
                } else if (element instanceof SelectMonsterById || element instanceof SelectMonsterByName) {
                    String name = getSelectMonstername((Monster) element);
                    String id = getMonsterid((Monster) element);

                    Map<String, ModObject> map = cellMap.get(MONSTERS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(MONSTERS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Monster) element, modObject.propertyMap);
                } else if (element instanceof NewMonster) {
                    String name = getMonstername((Monster) element);
                    String id = getMonsterid((Monster) element);

                    Map<String, ModObject> map = cellMap.get(MONSTERS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(MONSTERS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Monster) element, modObject.propertyMap);
                } else if (element instanceof SelectSpellById || element instanceof SelectSpellByName) {
                    String name = getSelectSpellname((Spell) element);
                    String id = getSpellid((Spell) element);

                    Map<String, ModObject> map = cellMap.get(SPELLS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(SPELLS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Spell) element, modObject.propertyMap);
                } else if (element instanceof NewSpell) {
                    String name = getSpellname((Spell) element);
                    //String id = getSpellid((Spell)element);

                    Map<String, ModObject> map = cellMap.get(SPELLS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(SPELLS, map);
                    }
                    ModObject modObject = map.get(name);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = "" + name;
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(name, modObject);
                    }
                    setPropertyValues((Spell) element, modObject.propertyMap);
                } else if (element instanceof SelectItemById || element instanceof SelectItemByName) {
                    String name = getSelectItemname((Item) element);
                    String id = getItemid((Item) element);

                    Map<String, ModObject> map = cellMap.get(ITEMS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(ITEMS, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Item) element, modObject.propertyMap);
                } else if (element instanceof NewItem) {
                    String name = getItemname((Item) element);
                    //String id = getItemid((Item)element);

                    Map<String, ModObject> map = cellMap.get(ITEMS);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(ITEMS, map);
                    }
                    ModObject modObject = map.get(name);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name;
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(name, modObject);
                    }
                    setPropertyValues((Item) element, modObject.propertyMap);
                } else if (element instanceof SelectSiteById || element instanceof SelectSiteByName) {
                    String name = getSelectSitename((Site) element);
                    String id = getSiteid((Site) element);

                    Map<String, ModObject> map = cellMap.get(SITES);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(SITES, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Site) element, modObject.propertyMap);
                } else if (element instanceof NewSite) {
                    String name = getSitename((Site) element);
                    String id = getSiteid((Site) element);

                    Map<String, ModObject> map = cellMap.get(SITES);
                    if (map == null) {
                        map = new HashMap<String, ModObject>();
                        cellMap.put(SITES, map);
                    }
                    ModObject modObject = map.get(id);
                    if (modObject == null) {
                        modObject = new ModObject();
                        modObject.title = name + " (" + id + ")";
                        modObject.propertyMap = new HashMap<String, PropertyValues>();
                        map.put(id, modObject);
                    }
                    setPropertyValues((Site) element, modObject.propertyMap);
                } else if (element instanceof SelectNation) {
                    //                  String name = getSelectNationname((Nation)element);
                    //                  String id = getNationid((Nation)element);
                    //
                    //                  Map<String, ModObject> map = cellMap.get(NATIONS);
                    //                  if (map == null) {
                    //                     map = new HashMap<String, ModObject>();
                    //                     cellMap.put(NATIONS, map);
                    //                  }
                    //                  ModObject modObject = map.get(id);
                    //                  if (modObject == null) {
                    //                     modObject = new ModObject();
                    //                     modObject.title = name + " (" + id + ")";
                    //                     modObject.propertyMap = new HashMap<String, PropertyValues>();
                    //                     map.put(id, modObject);
                    //                  }
                    //                  setPropertyValues((SelectNation)element, modObject.propertyMap, resource);
                }

            }

            try {
                // step 1
                Document document = new Document(PageSize.LETTER.rotate());
                // step 2
                File tempFile = File.createTempFile("dom4editor", ".pdf");
                tempFile.deleteOnExit();
                FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile);

                PdfWriter.getInstance(document, tempFileOutputStream);
                // step 3
                document.open();

                List<Map.Entry<String, Map<String, ModObject>>> cellList = new ArrayList<Map.Entry<String, Map<String, ModObject>>>();
                for (Map.Entry<String, Map<String, ModObject>> innerEntry : cellMap.entrySet()) {
                    cellList.add(innerEntry);
                }
                Collections.sort(cellList, new Comparator<Map.Entry<String, Map<String, ModObject>>>() {
                    @Override
                    public int compare(Map.Entry<String, Map<String, ModObject>> o1,
                            Map.Entry<String, Map<String, ModObject>> o2) {
                        return o1.getKey().compareTo(o2.getKey());
                    }
                });

                for (Map.Entry<String, Map<String, ModObject>> entry : cellList) {
                    PdfPTable table = new PdfPTable(1);
                    table.setWidthPercentage(100f);

                    PdfPCell cell = new PdfPCell(new Phrase(entry.getKey(), TITLE));
                    cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
                    cell.setFixedHeight(26f);
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    cell.setVerticalAlignment(Element.ALIGN_BOTTOM);
                    table.addCell(cell);
                    table.setHeaderRows(1);

                    List<Map.Entry<String, ModObject>> list = new ArrayList<Map.Entry<String, ModObject>>();
                    for (Map.Entry<String, ModObject> innerEntry : entry.getValue().entrySet()) {
                        list.add(innerEntry);
                    }

                    Collections.sort(list, new Comparator<Map.Entry<String, ModObject>>() {
                        @Override
                        public int compare(Map.Entry<String, ModObject> o1, Map.Entry<String, ModObject> o2) {
                            return o1.getValue().title.compareTo(o2.getValue().title);
                        }
                    });

                    PdfPTable propertyTable = null;
                    if (entry.getKey().equals(ARMOR)) {
                        propertyTable = getTable(new String[] { "name", "type", "prot", "def", "enc", "rcost" },
                                new String[] { "Name", "Type", "Prot", "Def", "Enc", "Rcost" },
                                new ValueTranslator[] { null, new ValueTranslator() {
                                    @Override
                                    public String translate(String value) {
                                        if (value == null)
                                            return null;
                                        if (value.equals("4"))
                                            return "Shield";
                                        if (value.equals("5"))
                                            return "Body Armor";
                                        if (value.equals("6"))
                                            return "Helmet";
                                        return "Unknown";
                                    }
                                }, null, null, null, null }, null, list);
                        propertyTable.setWidths(new float[] { 5, 1, 1, 1, 1, 1 });
                    }
                    if (entry.getKey().equals(WEAPONS)) {
                        propertyTable = getTable(
                                new String[] { "name", "dmg", "att", "nratt", "def", "len", "range", "ammo",
                                        "rcost" },
                                new String[] { "Name", "Dmg", "Att", "Nratt", "Def", "Len", "Range", "Ammo",
                                        "Rcost" },
                                null, null, list);
                        propertyTable.setWidths(new float[] { 5, 1, 1, 1, 1, 1, 1, 1, 1 });
                    }
                    if (entry.getKey().equals(MONSTERS)) {
                        propertyTable = getTable(
                                new String[] { "name", "hp", "prot", "MOVE", "size", "ressize", "str", "enc",
                                        "att", "def", "prec", "mr", "mor", "gcost", "rcost" },
                                new String[] { "Name", "HP", "Prot", "Move", "Size", "Rsize", "Str", "Enc",
                                        "Att", "Def", "Prec", "MR", "Mor", "Gcost", "Rcost" },
                                null, new ValueCombiner[] { null, null, null, new ValueCombiner() {
                                    @Override
                                    public String translate(String[] value) {
                                        if (value[0] == null && value[1] == null)
                                            return null;
                                        return value[0] + "/" + value[1];
                                    }

                                    @Override
                                    public String[] getNeededColumns() {
                                        return new String[] { "mapmove", "ap" };
                                    }
                                }, null, null, null, null, null, null, null, null, null, null, null }, list);
                        propertyTable.setWidths(new float[] { 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
                    }
                    if (entry.getKey().equals(ITEMS)) {
                        propertyTable = getTable(
                                new String[] { "name", "constlevel", "PATH", "type", "weapon", "armor" },
                                new String[] { "Name", "Constlevel", "Path Req", "Type", "Weapon", "Armor" },
                                new ValueTranslator[] { null, null, null, new ValueTranslator() {
                                    @Override
                                    public String translate(String value) {
                                        if (value == null)
                                            return null;
                                        if (value.equals("1"))
                                            return "1-h Weapon";
                                        if (value.equals("2"))
                                            return "2-h Weapon";
                                        if (value.equals("3"))
                                            return "Missile Weapon";
                                        if (value.equals("4"))
                                            return "Shield";
                                        if (value.equals("5"))
                                            return "Body Armor";
                                        if (value.equals("6"))
                                            return "Helmet";
                                        if (value.equals("7"))
                                            return "Boots";
                                        if (value.equals("8"))
                                            return "Misc";
                                        return "Unknown";
                                    }
                                }, null, null }, new ValueCombiner[] { null, null, new ValueCombiner() {
                                    @Override
                                    public String translate(String[] value) {
                                        if (value[0] == null && value[1] == null && value[2] == null
                                                && value[3] == null)
                                            return null;
                                        StringBuffer buf = new StringBuffer();
                                        if (value[0] != null && !value[0].equals("null")) {
                                            buf.append(getPathName(Integer.parseInt(value[0])) + value[1]);
                                        }
                                        if (value[2] != null && !value[2].equals("null")
                                                && !value[2].equals("-1")) {
                                            buf.append(getPathName(Integer.parseInt(value[2])) + value[3]);
                                        }
                                        return buf.toString();
                                    }

                                    @Override
                                    public String[] getNeededColumns() {
                                        return new String[] { "mainpath", "mainlevel", "secondarypath",
                                                "secondarylevel" };
                                    }
                                }, null, null, null }, list);
                        propertyTable.setWidths(new float[] { 2.5f, 1, 1, 1, 2.5f, 2.5f });
                    }
                    if (entry.getKey().equals(SPELLS)) {
                        propertyTable = getTable(
                                new String[] { "name", "school", "researchlevel", "aoe", "damage", "effect",
                                        "fatiguecost", "nreff", "range", "precision", "spec", "nextspell" },
                                new String[] { "Name", "School", "Research", "AOE", "Damage", "Effect",
                                        "Fatigue", "Nreff", "Range", "Precision", "Spec", "Nextspell" },
                                null, null, list);
                        propertyTable.setWidths(new float[] { 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
                    }
                    if (entry.getKey().equals(NATIONS)) {
                        propertyTable = getTable(new String[] { "name", "startsite1", "startsite2",
                                "startsite3", "startsite4", "era", "startfort" }, list);
                        propertyTable.setWidths(new float[] { 5, 1, 1, 1, 1, 1, 1 });
                    }
                    if (entry.getKey().equals(SITES)) {
                        propertyTable = getTable(
                                new String[] { "name", "path", "level", "rarity", "loc", "homemon", "homecom",
                                        "gold", "res" },
                                new String[] { "Name", "Path", "Level", "Rarity", "Loc", "Homemon", "Homecom",
                                        "Gold", "Res" },
                                new ValueTranslator[] { null, new ValueTranslator() {
                                    @Override
                                    public String translate(String value) {
                                        if (value == null)
                                            return null;
                                        if (value.equals("0"))
                                            return "Fire";
                                        if (value.equals("1"))
                                            return "Air";
                                        if (value.equals("2"))
                                            return "Water";
                                        if (value.equals("3"))
                                            return "Earth";
                                        if (value.equals("4"))
                                            return "Astral";
                                        if (value.equals("5"))
                                            return "Death";
                                        if (value.equals("6"))
                                            return "Nature";
                                        if (value.equals("7"))
                                            return "Blood";
                                        return "Unknown";
                                    }
                                }, null, null, null, null, null, null, null }, null, list);
                        propertyTable.setWidths(new float[] { 5, 1, 1, 1, 1, 1, 1, 1, 1 });
                    }
                    PdfPCell innerCell = new PdfPCell();
                    innerCell.addElement(propertyTable);
                    innerCell.setBorder(PdfPCell.NO_BORDER);
                    innerCell.setHorizontalAlignment(Element.ALIGN_LEFT);

                    table.addCell(innerCell);
                    document.add(table);
                    document.newPage();
                }
                document.close();

                tempFileOutputStream.flush();
                tempFileOutputStream.close();

                Program pdfViewer = Program.findProgram("pdf");
                if (pdfViewer != null) {
                    pdfViewer.execute(tempFile.getAbsolutePath());
                } else {
                    FileDialog dialog = new FileDialog(shell, SWT.SAVE);
                    dialog.setFilterExtensions(new String[] { "*.pdf" });
                    if (dialog.open() != null) {
                        FileInputStream from = null;
                        FileOutputStream to = null;
                        try {
                            String filterPath = dialog.getFilterPath();
                            String name = dialog.getFileName();

                            from = new FileInputStream(new File(tempFile.getAbsolutePath()));
                            to = new FileOutputStream(new File(filterPath + File.separator + name));
                            byte[] buffer = new byte[4096];
                            int bytesRead;

                            while ((bytesRead = from.read(buffer)) != -1) {
                                to.write(buffer, 0, bytesRead); // write
                            }
                        } finally {
                            if (from != null) {
                                from.close();
                            }
                            if (to != null) {
                                to.close();
                            }
                        }
                    }
                }

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

From source file:org.larz.dom4.editor.ReportGenerator.java

License:Open Source License

private static PdfPTable getTable(String[] columns, String[] columnNames, ValueTranslator[] trans,
        ValueCombiner[] combine, List<Map.Entry<String, ModObject>> list) {
    PdfPTable table = new PdfPTable(columns.length);
    table.setWidthPercentage(100f);/*from   w ww.ja v  a  2  s.c o m*/
    table.setHorizontalAlignment(Element.ALIGN_LEFT);
    for (String col : columnNames) {
        PdfPCell c = new PdfPCell(new Phrase(col, SUBTITLE));
        c.setBackgroundColor(BaseColor.LIGHT_GRAY);
        table.addCell(c);
    }
    table.setHeaderRows(1);

    for (Map.Entry<String, ModObject> innerEntry : list) {
        String name = innerEntry.getValue().title;
        Map<String, PropertyValues> map = innerEntry.getValue().propertyMap;

        List<Map.Entry<String, PropertyValues>> list2 = new ArrayList<Map.Entry<String, PropertyValues>>();
        for (Map.Entry<String, PropertyValues> innerEntry2 : map.entrySet()) {
            list2.add(innerEntry2);
        }
        Collections.sort(list2, new Comparator<Map.Entry<String, PropertyValues>>() {
            @Override
            public int compare(Map.Entry<String, PropertyValues> o1, Map.Entry<String, PropertyValues> o2) {
                return o1.getKey().compareTo(o2.getKey());
            }
        });

        if (list2.size() == 0)
            continue;

        PdfPCell[] cells = new PdfPCell[columns.length];
        cells[0] = new PdfPCell();
        cells[0].addElement(new Phrase(name, BOLD_TEXT));

        for (int i = 1; i < cells.length; i++) {
            cells[i] = new PdfPCell();
            if (combine != null && combine[i] != null) {
                String[] neededCols = combine[i].getNeededColumns();
                String[] oldValues = new String[neededCols.length];
                String[] newValues = new String[neededCols.length];
                for (int j = 0; j < neededCols.length; j++) {
                    for (Map.Entry<String, PropertyValues> entry : list2) {
                        if (entry.getKey().equals(neededCols[j])) {
                            oldValues[j] = entry.getValue().oldValue;
                            newValues[j] = entry.getValue().newValue;
                            break;
                        }
                    }
                }
                // Put old values into null new values
                boolean hasNew = false;
                for (int k = 0; k < newValues.length; k++) {
                    if (newValues[k] != null) {
                        hasNew = true;
                        break;
                    }
                }
                if (hasNew) {
                    for (int k = 0; k < newValues.length; k++) {
                        if (newValues[k] == null) {
                            newValues[k] = oldValues[k];
                        }
                    }
                }
                String newValue = combine[i].translate(newValues);
                String oldValue = combine[i].translate(oldValues);
                if (newValue != null) {
                    Phrase phrase = new Phrase();
                    phrase.add(new Chunk(newValue, BOLD_TEXT));
                    if (oldValue != null) {
                        phrase.add(new Chunk(" (" + oldValue + ")", TEXT));
                    }
                    cells[i].addElement(phrase);
                } else if (oldValue != null) {
                    cells[i].addElement(new Phrase(oldValue, TEXT));
                }
            } else {
                for (Map.Entry<String, PropertyValues> entry : list2) {
                    if (entry.getKey().equals(columns[i])) {
                        String oldValue = entry.getValue().oldValue;
                        String newValue = entry.getValue().newValue;
                        if (trans != null && trans.length > i && trans[i] != null) {
                            oldValue = trans[i].translate(oldValue);
                            newValue = trans[i].translate(newValue);
                        }
                        if (newValue != null) {
                            Phrase phrase = new Phrase();
                            phrase.add(new Chunk(newValue, BOLD_TEXT));
                            if (oldValue != null && !oldValue.equals("null")) {
                                phrase.add(new Chunk(" (" + oldValue + ")", TEXT));
                            }
                            cells[i].addElement(phrase);
                        } else if (oldValue != null && !oldValue.equals("null")) {
                            cells[i].addElement(new Phrase(oldValue, TEXT));
                        }
                        break;
                    }
                }
            }
        }

        for (PdfPCell cell : cells) {
            table.addCell(cell);
        }
    }
    return table;
}

From source file:org.me.modelos.PDFHelper.java

public void tablaToPdf(JTable jTable, File pdfNewFile, String title) {
    try {//from w w  w . j a v  a 2s.  c  om
        Font subCategoryFont = new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD);
        Document document = new Document(PageSize.LETTER.rotate());
        PdfWriter writer = null;
        try {
            writer = PdfWriter.getInstance(document, new FileOutputStream(pdfNewFile));
        } catch (FileNotFoundException fileNotFoundException) {
            Message.showErrorMessage(fileNotFoundException.getMessage());
        }

        writer.setBoxSize("art", new Rectangle(150, 10, 700, 580));
        writer.setPageEvent(new HeaderFooterPageEvent());
        document.open();
        document.addTitle(title);

        document.addSubject("Reporte");
        document.addKeywords("reportes, gestion, pdf");
        document.addAuthor("Gestion de Proyectos de software");
        document.addCreator("gestion de proyectos");

        Paragraph parrafo = new Paragraph(title, subCategoryFont);

        PdfPTable table = new PdfPTable(jTable.getColumnCount());
        table.setWidthPercentage(100);
        PdfPCell columnHeader;

        for (int column = 0; column < jTable.getColumnCount(); column++) {
            Font font = new Font(Font.FontFamily.HELVETICA);
            font.setColor(255, 255, 255);
            columnHeader = new PdfPCell(new Phrase(jTable.getColumnName(column), font));
            columnHeader.setHorizontalAlignment(Element.ALIGN_LEFT);
            columnHeader.setBackgroundColor(new BaseColor(96, 125, 139));
            table.addCell(columnHeader);
        }
        table.getDefaultCell().setBackgroundColor(new BaseColor(255, 255, 255));
        table.setHeaderRows(1);
        BaseColor verdad = new BaseColor(255, 255, 255);
        BaseColor falso = new BaseColor(214, 230, 244);
        boolean bandera = false;
        for (int row = 0; row < jTable.getRowCount(); row++) {

            for (int column = 0; column < jTable.getColumnCount(); column++) {

                if (bandera) {
                    table.getDefaultCell().setBackgroundColor(verdad);
                } else {
                    table.getDefaultCell().setBackgroundColor(falso);
                }
                table.addCell(jTable.getValueAt(row, column).toString());
                bandera = !bandera;
            }

        }

        parrafo.add(table);
        document.add(parrafo);
        document.close();
        //JOptionPane.showMessageDialog(null, "Se ha creado el pdf en " + pdfNewFile.getPath(),
        //        "RESULTADO", JOptionPane.INFORMATION_MESSAGE);
    } catch (DocumentException documentException) {
        System.out.println("Se ha producido un error " + documentException);
        JOptionPane.showMessageDialog(null, "Se ha producido un error" + documentException, "ERROR",
                JOptionPane.ERROR_MESSAGE);
    }
}

From source file:org.openlmis.web.view.pdf.requisition.RequisitionCellFactory.java

License:Open Source License

public static PdfPCell categoryRow(Integer visibleColumnsSize, LineItem lineItem) {
    Chunk chunk = new Chunk(lineItem.getCategoryName(), FontFactory.getFont(FontFactory.HELVETICA_BOLD));
    PdfPCell cell = new PdfPCell(new Phrase(chunk));
    cell.setColspan(visibleColumnsSize);
    cell.setBackgroundColor(HEADER_BACKGROUND);
    cell.setPadding(CELL_PADDING);// ww  w .  j  a v  a  2  s  . c o m
    return cell;
}

From source file:org.openlmis.web.view.pdf.requisition.RequisitionPdfModel.java

License:Open Source License

private PdfPTable getTableFor(List<? extends LineItem> lineItems, Boolean fullSupply,
        List<? extends Column> columnList)
        throws DocumentException, NoSuchFieldException, IllegalAccessException, IOException {
    Template template = Template.getInstance(columnList);
    List<? extends Column> visibleColumns = template.getPrintableColumns(fullSupply);

    PdfPTable table = prepareTable(visibleColumns);

    boolean odd = true;

    LineItem previousLineItem = null;/*from   ww  w . j a v  a2 s  .  com*/
    for (LineItem lineItem : lineItems) {
        if (previousLineItem == null || !lineItem.compareCategory(previousLineItem)) {
            table.addCell(categoryRow(visibleColumns.size(), lineItem));
            previousLineItem = lineItem;
        }

        if (lineItem.isRnrLineItem()) {
            PrintRnrLineItem printRnrLineItem = new PrintRnrLineItem((RnrLineItem) lineItem);
            printRnrLineItem.calculate(rnrColumnList, lossesAndAdjustmentsTypes, numberOfMonths,
                    requisition.getStatus());
        }

        String currencySymbol = messageService.message(LABEL_CURRENCY_SYMBOL);

        if (!configService.getBoolValue("RNR_PRINT_REPEAT_CURRENCY_SYMBOL")) {
            currencySymbol = "";
        }

        List<PdfPCell> cells = getCells(visibleColumns, lineItem, currencySymbol);
        odd = !odd;

        for (PdfPCell cell : cells) {
            cell.setBackgroundColor(odd ? BaseColor.WHITE : ROW_GREY_BACKGROUND);
            table.addCell(cell);
        }
    }
    return table;
}