如何设置在iTextpdf台式显示器(How to set up a table display i

2019-10-23 14:26发布

我有我想打印文件一样的发票在表中设置的应用程序。 表中的每一行会从数据库中一个单独的文件。 通过DB迭代是不是一个问题,但我希望它显示是这样的:

我可以提前确定在表中的行的总数,如果使任何差异。 有没有人有一段代码为出发点来使用?

Answer 1:

请大家看看SimpleTable11当您运行的代码示例和创建的PDF: simple_table11.pdf

当你需要不同类型的PdfPCell实例(无/有厚边框,有/无,合并单元格,左/右对齐),你将受益于写一个辅助方法:

public PdfPCell createCell(String content, float borderWidth, int colspan, int alignment) {
    PdfPCell cell = new PdfPCell(new Phrase(content));
    cell.setBorderWidth(borderWidth);
    cell.setColspan(colspan);
    cell.setHorizontalAlignment(alignment);
    return cell;
}

使用这种方法会让你的代码更容易阅读和维护。

这是我们如何创建文档并添加表:

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    PdfPTable table = new PdfPTable(5);
    table.setWidths(new int[]{1, 2, 1, 1, 1});
    table.addCell(createCell("SKU", 2, 1, Element.ALIGN_LEFT));
    table.addCell(createCell("Description", 2, 1, Element.ALIGN_LEFT));
    table.addCell(createCell("Unit Price", 2, 1, Element.ALIGN_LEFT));
    table.addCell(createCell("Quantity", 2, 1, Element.ALIGN_LEFT));
    table.addCell(createCell("Extension", 2, 1, Element.ALIGN_LEFT));
    String[][] data = {
        {"ABC123", "The descriptive text may be more than one line and the text should wrap automatically", "$5.00", "10", "$50.00"},
        {"QRS557", "Another description", "$100.00", "15", "$1,500.00"},
        {"XYZ999", "Some stuff", "$1.00", "2", "$2.00"}
    };
    for (String[] row : data) {
        table.addCell(createCell(row[0], 1, 1, Element.ALIGN_LEFT));
        table.addCell(createCell(row[1], 1, 1, Element.ALIGN_LEFT));
        table.addCell(createCell(row[2], 1, 1, Element.ALIGN_RIGHT));
        table.addCell(createCell(row[3], 1, 1, Element.ALIGN_RIGHT));
        table.addCell(createCell(row[4], 1, 1, Element.ALIGN_RIGHT));
    }
    table.addCell(createCell("Totals", 2, 4, Element.ALIGN_LEFT));
    table.addCell(createCell("$1,552.00", 2, 1, Element.ALIGN_RIGHT));
    document.add(table);
    document.close();
}

正如你指出,你已经拥有的代码循环遍历数据库中的记录,我用一个二维模仿那些记录String数组。

还有很多要说一下表,但您发表任何进一步的问题之前,请先阅读在免费的电子书表事件部分在计算器上最好的iText的问题 。



文章来源: How to set up a table display in iTextpdf
标签: itextpdf