【问题标题】:IText 7: Table Content is not getting displayedIText 7:表格内容未显示
【发布时间】:2016-12-06 02:55:55
【问题描述】:

我正在尝试使用 Java 中的 IText 7 创建一个 pdf 文档。但是表格内容没有显示在 pdf 中。

代码片段:

private void addReceiptDetails(Document doc) {
        Table table = new Table(2, true);
        table.addCell(new Cell().add("C1"));
        table.addCell(new Cell().add("C2"));
        for (TaxTypeModel taxType : sale.getTaxModel().getTaxTypeModelList()) {
            table.addCell(new Cell().add("C9"));
            table.addCell(new Cell().add("C10"));
        }
        table.addCell(new Cell().add("C3"));
        table.addCell(new Cell().add("C4"));

        table.addCell(new Cell().add("C5"));
        table.addCell(new Cell().add("C6"));

        table.addCell(new Cell().add("C7"));
        table.addCell(new Cell().add("C8"));

        doc.add(table);
        table.complete();
        doc.close();
    }

PDF 表格内容:

有人可以帮我吗?我不确定这里到底出了什么问题。

编辑:我尝试了来自here 的代码示例:

Table table = new Table(8);
        for (int i = 0; i < 16; i++) {
            table.addCell("hi");
        }
        doc.add(table);

这也只是创建空单元格。

【问题讨论】:

    标签: java itext


    【解决方案1】:

    我无法重现您的问题。

    我运行了您的代码并进行了明显的更改:

    • 我必须删除 for 循环,因为我这里没有这样的 TaxTypeModel
    • 我必须为文档添加实例化代码。

    即像这样:

    try (   OutputStream result = new FileOutputStream("simpleTableRahulDevMishra.pdf");
            PdfWriter writer = new PdfWriter(result);
            PdfDocument pdfDocument = new PdfDocument(writer);
            Document doc = new Document(pdfDocument)   )
    {
        Table table = new Table(2, true);
        table.addCell(new Cell().add("C1"));
        table.addCell(new Cell().add("C2"));
        /*
        for (TaxTypeModel taxType : sale.getTaxModel().getTaxTypeModelList()) {
            table.addCell(new Cell().add("C9"));
            table.addCell(new Cell().add("C10"));
        }
        */
        table.addCell(new Cell().add("C3"));
        table.addCell(new Cell().add("C4"));
    
        table.addCell(new Cell().add("C5"));
        table.addCell(new Cell().add("C6"));
    
        table.addCell(new Cell().add("C7"));
        table.addCell(new Cell().add("C8"));
    
        doc.add(table);
        table.complete();
        doc.close();
    }
    

    Adobe Reader 中的结果如下所示:

    因此,问题的原因不在您提供的代码中。因此,请提供允许重现您的问题的代码。


    尝试用其他代码示例重现问题

    Table table = new Table(8);
    for (int i = 0; i < 16; i++) {
        table.addCell("hi");
    }
    doc.add(table);
    

    还产生了带有内容的单元格:

    【讨论】:

    • 非常感谢您的帮助。我花了很多时间来解决这个问题。我现在可以解决它。我必须为每个单元格添加.setFontColor(Color.BLACK)。我将页面背景图像设置为 LIGHT_GRAY,也许这就是默认颜色不可见的原因。
    • “我必须为每个单元格添加.setFontColor(Color.BLACK) - 我假设有一个更简单的解决方案,也许您只需将右侧的填充颜色设置为黑色地方...
    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多