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

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

Introduction

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

Prototype

public void addElement(Element element) 

Source Link

Document

Adds an iText element to the cell.

Usage

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private PdfPTable addDisplayItem(Parser parser, DisplayItem di, String basePath, String serverRoot,
        boolean generateBlank, GlobalVariables gv, String remoteUser, int oId)
        throws BadElementException, MalformedURLException, IOException {

    PdfPCell labelCell = new PdfPCell();
    PdfPCell valueCell = new PdfPCell();
    labelCell.setBorderColor(BaseColor.LIGHT_GRAY);
    valueCell.setBorderColor(BaseColor.LIGHT_GRAY);

    PdfPTable tItem = null;/*from ww  w  . ja  va  2  s  . c  o  m*/

    // Add label
    StringBuffer html = new StringBuffer();
    html.append("<span class='label ");
    if (di.labelbold) {
        html.append(" lbold");
    }

    // Get text value
    String textValue = "";
    if (di.text != null && di.text.trim().length() > 0) {
        textValue = di.text;
    } else {
        textValue = di.name;
    }
    textValue = textValue.trim();
    if (textValue.charAt(textValue.length() - 1) != ':') {
        textValue += ":";
    }
    if (di.labelcaps) {
        textValue = textValue.toUpperCase();
    }

    // Add language class
    html.append(GeneralUtilityMethods.getLanguage(textValue));
    html.append("'>");

    // Add text value
    html.append(GeneralUtilityMethods.unesc(textValue));
    html.append("</span>");

    // Only include hints if we are generating a blank template
    if (generateBlank) {
        html.append("<span class='hint ");
        if (di.hint != null) {
            html.append(GeneralUtilityMethods.getLanguage(di.hint));
            html.append("'>");
            html.append(GeneralUtilityMethods.unesc(di.hint));
        }
        html.append("</span>");
    }

    parser.elements.clear();
    try {
        parser.xmlParser.parse(new StringReader(html.toString()));

        for (Element element : parser.elements) {
            if (textValue != null && textValue.length() > 0) {
                if (GeneralUtilityMethods.isRtlLanguage(textValue)) {
                    labelCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
                }
            } else if (di.hint != null && di.hint.length() > 0) {
                if (GeneralUtilityMethods.isRtlLanguage(textValue)) {
                    labelCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
                }
            }
            labelCell.addElement(element);
        }
    } catch (Exception e) {
        log.info("Error parsing: " + html.toString() + " : " + e.getMessage());
        lm.writeLog(sd, survey.getId(), remoteUser, LogManager.ERROR,
                e.getMessage() + " for: " + html.toString());
        labelCell.addElement(getPara(html.toString(), di, gv, null, null));
    }

    // Set the content of the value cell
    try {
        updateValueCell(parser, remoteUser, valueCell, di, generateBlank, basePath, serverRoot, gv, oId);
    } catch (Exception e) {
        log.info("Error updating value cell, continuing: " + basePath + " : " + di.value);
        log.log(Level.SEVERE, "Exception", e);
    }

    int widthValue = 5;
    if (di.widthLabel == 10) {
        widthValue = 1; // Label and value in 1 column
        di.widthLabel = 1;
        tItem = new PdfPTable(1);
    } else {
        // Label and value in 2 columns
        widthValue = 10 - di.widthLabel;
        tItem = new PdfPTable(10);
    }
    // Format label cell
    labelCell.setColspan(di.widthLabel);
    if (di.labelbg != null) {
        labelCell.setBackgroundColor(di.labelbg);
    }

    // Format value cell
    valueCell.setColspan(widthValue);
    if (di.valueHeight > -1.0) {
        valueCell.setMinimumHeight((float) di.valueHeight);
    }
    if (di.valuebg != null) {
        valueCell.setBackgroundColor(di.valuebg);
    }

    tItem.addCell(labelCell);
    tItem.addCell(valueCell);
    return tItem;
}

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private void updateValueCell(Parser parser, String remoteUser, PdfPCell valueCell, DisplayItem di,
        boolean generateBlank, String basePath, String serverRoot, GlobalVariables gv, int oId)
        throws Exception {

    // Questions that append their values to this question
    ArrayList<String> deps = gv.addToList.get(di.fIdx + "_" + di.rec_number + "_" + di.name);

    if (di.type.startsWith("select")) {
        processSelect(parser, remoteUser, valueCell, di, generateBlank, gv, oId);
    } else if (di.type.equals("image")) {
        if (di.value != null && !di.value.trim().equals("") && !di.value.trim().equals("Unknown")) {
            if (di.isHyperlink) {
                Anchor anchor = new Anchor(serverRoot + di.value);
                anchor.setReference(serverRoot + di.value);

                valueCell.addElement(getPara("", di, gv, deps, anchor));
            } else {
                try {
                    Image img = Image.getInstance(basePath + "/" + di.value);
                    valueCell.addElement(img);
                } catch (Exception e) {
                    log.info("Error: image " + basePath + "/" + di.value + " not added: " + e.getMessage());
                    log.log(Level.SEVERE, "Adding image to pdf", e);
                }/*from   w  ww .  j  a va2 s . c om*/
            }

        } else {
            // TODO add empty image
        }

    } else if (di.type.equals("video") || di.type.equals("audio")) {
        if (di.value != null && !di.value.trim().equals("") && !di.value.trim().equals("Unknown")) {
            Anchor anchor = new Anchor(serverRoot + di.value);
            anchor.setReference(serverRoot + di.value);

            valueCell.addElement(getPara("", di, gv, deps, anchor));

        } else {
            // TODO add empty image
        }

    } else if (di.type.equals("geopoint") || di.type.equals("geoshape") || di.type.equals("geotrace")
            || di.type.startsWith("geopolygon_") || di.type.startsWith("geolinestring_")) {

        Image img = PdfUtilities.getMapImage(sd, di.map, di.value, di.location, di.zoom, gv.mapbox_key,
                survey.id, user, di.markerColor);

        if (img != null) {
            valueCell.addElement(img);
        } else {
            valueCell.addElement(getPara(" ", di, gv, deps, null));
        }

    } else if (di.isBarcode) {
        BarcodeQRCode qrcode = new BarcodeQRCode(di.value.trim(), 1, 1, null);
        Image qrcodeImage = qrcode.getImage();
        qrcodeImage.setAbsolutePosition(10, 500);
        qrcodeImage.scalePercent(200);

        valueCell.addElement((qrcodeImage));

    } else {
        // Todo process other question types
        String value = null;

        if (di.value == null || di.value.trim().length() == 0) {
            value = " "; // Need a space to show a blank row
        } else {
            if (di.value != null && di.value.length() > 0) {
                if (GeneralUtilityMethods.isRtlLanguage(di.value)) {
                    valueCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
                }
            }

            if (di.type.equals("dateTime") || di.type.equals("timestamp")) { // Set date time to local time

                DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                df.setTimeZone(TimeZone.getTimeZone("UTC"));
                Date date = df.parse(di.value);
                df.setTimeZone(TimeZone.getTimeZone(tz));
                value = df.format(date);
                log.info("Convert date to local time: " + di.name + " : " + di.value + " : " + " : " + value
                        + " : " + di.type + " : " + tz);
            } else {
                value = di.value;
            }

        }
        valueCell.addElement(getPara(value, di, gv, deps, null));
    }
}

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private void processSelect(Parser parser, String remoteUser, PdfPCell cell, DisplayItem di,
        boolean generateBlank, GlobalVariables gv, int oId) throws Exception {

    Font f = null;/*from  w  ww .  j a  v a 2 s.c o  m*/
    boolean isRtl = false;

    // If generating blank template
    List list = new List();
    list.setAutoindent(false);
    list.setSymbolIndent(24);

    String lang;

    boolean isSelectMultiple = di.type.equals("select") ? true : false;

    // Questions that append their values to this question
    ArrayList<String> deps = gv.addToList.get(di.fIdx + "_" + di.rec_number + "_" + di.name);

    /*
     * Add the value of this question unless
     *   The form is not blank and the value is "other" and their are 1 or more dependent questions
     *   In this case we assume that its only the values of the dependent questions that are needed
     */

    if (generateBlank) {
        // TODO get real choices using choice manager
        Form form = survey.forms.get(di.fIdx);
        Question question = form.questions.get(di.qIdx);
        OptionList ol = survey.optionLists.get(question.list_name);
        for (Option o : ol.options) {

            String text = null;
            if (o.display_name != null && o.display_name.trim().length() > 0) {
                text = o.display_name;
            } else {
                text = o.labels.get(languageIdx).text;
            }
            lang = GeneralUtilityMethods.getLanguage(text);
            f = getFont(lang);
            isRtl = isRtl(lang);

            ListItem item = new ListItem(GeneralUtilityMethods.unesc(text), f);

            if (isSelectMultiple) {
                item.setListSymbol(new Chunk("\uf096", Symbols));
                list.add(item);
            } else {
                item.setListSymbol(new Chunk("\uf10c", Symbols));
                list.add(item);
            }
        }

        if (isRtl) {
            cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
        }
        cell.addElement(list);

    } else {
        if (deps == null || (di.value != null && !di.value.trim().toLowerCase().equals("other"))) {

            String value = di.value;
            if (di.type.equals("select1")) {

                Form form = survey.forms.get(di.fIdx);
                Question question = form.questions.get(di.qIdx);

                ArrayList<String> matches = new ArrayList<String>();
                matches.add(di.value);
                value = choiceManager.getLabel(sd, cResults, user, oId, survey.id, question.id, question.l_id,
                        question.external_choices, question.external_table,
                        survey.languages.get(languageIdx).name, languageIdx, matches, survey.ident);
            } else if (di.type.equals("select")) {
                String nameValue = value;
                if (nameValue != null) {
                    String vArray[] = nameValue.split(" ");
                    ArrayList<String> matches = new ArrayList<String>();
                    if (vArray != null) {
                        for (String v : vArray) {
                            matches.add(v);
                        }
                    }
                    Form form = survey.forms.get(di.fIdx);
                    Question question = form.questions.get(di.qIdx);
                    value = choiceManager.getLabel(sd, cResults, user, oId, survey.id, question.id,
                            question.l_id, question.external_choices, question.external_table,
                            survey.languages.get(languageIdx).name, languageIdx, matches, survey.ident);
                }
            }

            if (GeneralUtilityMethods.isRtlLanguage(di.value)) {
                cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
            }
            parser.elements.clear();
            String html = getHtml(value, di, gv, deps);
            try {
                parser.xmlParser.parse(new StringReader(html));
            } catch (Exception e) {
                log.info("Error parsing: " + html.toString() + " : " + e.getMessage());
                lm.writeLog(sd, survey.getId(), remoteUser, LogManager.ERROR,
                        e.getMessage() + " for: " + html.toString());
                cell.addElement(getPara(html.toString(), di, gv, null, null));
            }
            for (Element element : parser.elements) {
                cell.addElement(element);
            }
            //cell.addElement(getPara(value, di, gv, deps, null));
        }

    }

}

From source file:org.smap.sdal.managers.PDFTableManager.java

License:Open Source License

private PdfPCell addDisplayItem(Parser parser, KeyValue kv, String basePath, boolean barcode, String type)
        throws BadElementException, MalformedURLException, IOException {

    PdfPCell valueCell = new PdfPCell();
    valueCell.setBorderColor(BaseColor.LIGHT_GRAY);

    // Set the content of the value cell
    try {//w w  w  .  j  a  v  a  2  s . com
        if (type != null && type.equals("image")) {
            Image img = Image.getInstance(kv.v);
            valueCell.addElement(img);
        } else if (barcode && kv.v.trim().length() > 0) {
            BarcodeQRCode qrcode = new BarcodeQRCode(kv.v.trim(), 1, 1, null);
            Image qrcodeImage = qrcode.getImage();
            qrcodeImage.setAbsolutePosition(10, 500);
            qrcodeImage.scalePercent(200);
            valueCell.addElement((qrcodeImage));
        } else {
            valueCell.addElement(getPara(kv.v));
        }
    } catch (Exception e) {
        log.info("Error updating value cell, continuing: " + basePath + " : " + kv.v);
        log.log(Level.SEVERE, "Exception", e);
    }

    return valueCell;
}

From source file:pipe.PdfMaker.java

/**
 * Builds and returns the main table.//from   www  . j  a v  a2 s .c o m
 * 
 * @return
 */
Element mainElement(ArrayList values) throws BadElementException {

    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100f);
    table.getDefaultCell().setBorderWidth(0.5f);

    Element element;
    PdfPCell cell;
    element = this.firstElement((String) values.get(0));
    cell = this.createCell(1, 1);
    cell.setBorder(15);
    cell.setPadding(2f);
    cell.addElement(element);
    table.addCell(cell);
    String dirString = "pictures" + File.separator + (String) values.get(0) + "_" + (String) values.get(1) + "_"
            + (String) values.get(2) + File.separator + "01.jpg";
    element = this.fourthLogoElement(dirString);
    // You need to pass the image to the constructor.
    // If you add the image, it will be stretched to fill the cell.
    cell = new PdfPCell((Image) element);
    cell.setPadding(2);
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setVerticalAlignment(Element.ALIGN_CENTER);
    cell.setBorderWidth(0.3f);
    cell.setRowspan(4);
    table.addCell(cell);

    element = this.thirdElement((String) values.get(1), (String) values.get(2));
    cell = this.createCell(1, 1);
    cell.addElement(element);
    table.addCell(cell);

    element = this.fifthElement((String) values.get(3), (String) values.get(4), (String) values.get(5));
    cell = this.createCell(1, 1);
    cell.addElement(element);
    table.addCell(cell);

    element = this.sixthElement((String) values.get(6), (String) values.get(7));
    cell = this.createCell(1, 1);
    cell.addElement(element);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    element = this.seventhElement((String) values.get(8), (String) values.get(9));
    cell = this.createCell(1, 1);
    cell.addElement(element);
    table.addCell(cell);

    element = this.eightthElement((String) values.get(10), (String) values.get(11));
    cell = this.createCell(2, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.ninethElement((String) values.get(12), (String) values.get(13), (String) values.get(14));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.tenthElement((String) values.get(15), (String) values.get(16), (String) values.get(17));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.eleventhElement((String) values.get(18), (String) values.get(19), (String) values.get(20));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.twelvethElement((String) values.get(21), (String) values.get(22), (String) values.get(23));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.thirteenthElement((String) values.get(24), (String) values.get(25));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.fourteenthElement((String) values.get(26), (String) values.get(27));
    cell = this.createCell(1, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    element = this.fifteenthElement((String) values.get(28));
    cell = this.createCell(2, 1);
    cell.setBorderWidth(0.3f);
    cell.addElement(element);
    table.addCell(cell);

    return table;
}

From source file:pipe.PdfMaker.java

private Element thirdElement(String hersteller, String modell) {
    float leading = 9f;
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100f);/*  w ww.j  a  v a 2  s  . c  om*/
    PdfPCell cell;

    cell = new PdfPCell(new Paragraph("Hersteller", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Modell", arialSmall));
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setGrayFill(0.85f);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph herstellerInfo = new Paragraph(hersteller, courier);
    herstellerInfo.setLeading(leading);
    cell.addElement(herstellerInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph modellInfo = new Paragraph(modell, courier);
    modellInfo.setLeading(leading);
    cell.addElement(modellInfo);
    table.addCell(cell);

    return table;
}

From source file:pipe.PdfMaker.java

private Element fifthElement(String land, String edition, String jahr) {
    float leading = 9f;
    PdfPTable table = new PdfPTable(3);
    table.setWidthPercentage(100f);// w  w  w .ja v  a  2  s .c  o m
    PdfPCell cell;
    //Hier die Header zuerst
    cell = new PdfPCell(new Paragraph("Land", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Edition", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Jahr", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    //Ab hier die Werte
    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    Paragraph herkunftInfo = new Paragraph(land, courier);
    herkunftInfo.setLeading(leading);
    cell.addElement(herkunftInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    Paragraph editionInfo = new Paragraph(edition, courier);
    editionInfo.setLeading(leading);
    cell.addElement(editionInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph yearInfo = new Paragraph(jahr, courier);
    yearInfo.setLeading(leading);
    cell.addElement(yearInfo);
    table.addCell(cell);

    return table;
}

From source file:pipe.PdfMaker.java

private Element sixthElement(String grundform, String mundstck) {
    float leading = 9f;
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100f);//from   w  w w  . j a v a2s  .  c  o  m
    PdfPCell cell;

    cell = new PdfPCell(new Paragraph("Grundform", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Mundstck", arialSmall));
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setGrayFill(0.85f);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph herstellerInfo = new Paragraph(grundform, courier);
    herstellerInfo.setLeading(leading);
    cell.addElement(herstellerInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph modellInfo = new Paragraph(mundstck, courier);
    modellInfo.setLeading(leading);
    cell.addElement(modellInfo);
    table.addCell(cell);

    return table;
}

From source file:pipe.PdfMaker.java

private Element seventhElement(String kopfmat, String mundmat) {
    float leading = 9f;
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100f);/*from  ww  w. j ava 2s .  c o  m*/
    PdfPCell cell;

    cell = new PdfPCell(new Paragraph("Kopfmaterial", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Material Mundstck", arialSmall));
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setGrayFill(0.85f);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph mundMatInfo = new Paragraph(kopfmat, courier);
    mundMatInfo.setLeading(leading);
    cell.addElement(mundMatInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph modellInfo = new Paragraph(mundmat, courier);
    modellInfo.setLeading(leading);
    cell.addElement(modellInfo);
    table.addCell(cell);

    return table;
}

From source file:pipe.PdfMaker.java

private Element eightthElement(String applikation, String tabak) {
    float leading = 9f;
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100f);//  w  w w.j  a  va2  s .  c o m
    PdfPCell cell;

    cell = new PdfPCell(new Paragraph("Applikation", arialSmall));
    cell.setPadding(2);
    cell.setGrayFill(0.85f);
    cell.setBorderWidth(0.3f);
    table.addCell(cell);

    cell = new PdfPCell(new Paragraph("Eingerauchter Tabak", arialSmall));
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setGrayFill(0.85f);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph mundMatInfo = new Paragraph(applikation, courier);
    mundMatInfo.setLeading(leading);
    cell.addElement(mundMatInfo);
    table.addCell(cell);

    cell = new PdfPCell();
    cell.setPadding(2);
    cell.setBorderWidth(0.3f);
    cell.setFixedHeight(30f);
    Paragraph modellInfo = new Paragraph(tabak, courier);
    modellInfo.setLeading(leading);
    cell.addElement(modellInfo);
    table.addCell(cell);

    return table;
}