如何创建一个 itext table 在用户指定的位置有单元格

How to create a itext table having cells at user specified positions

我需要在 iText PDF 中添加图像 table,但单元格(由图像组成)的位置将取决于用户提供的索引(行号和列号)。如果没有给出任何图像的索引,此 table 之间也可能有空单元格。

如何在 itext pdf 中随机添加一个单元格?

我在各种论坛上寻找过这个,但没有成功。我真的很感激你的帮助。

iText的Tableclass中没有API可以在任意位置添加单元格。这种决定背后的原因在于 iText 的 Table 架构:如果 table 尚未构建(即不知道是否会有一些单元格的 rowpan and/or colpan 大于1), iText 不知道它是否可以在某个自定义位置放置一个单元格是不可行的。

不过,好消息是所有与布局相关的代码只有在 table 添加到文档后才会触发。因此,您始终可以执行以下操作:

  • 创建 table
  • 用一些预先保存的空 Cell 对象填充它
  • 根据要求更改一些 Cell 对象
  • 将 table 添加到文档中

在上面的代码片段中,我将在添加单元格后向 table 添加一些对角线内容。图像可以采用相同的方法。

        int numberOfRows = 3;
    int numberOfColumns = 3;
    Table table = new Table(numberOfColumns);
    List<List<Cell>> cells = new ArrayList<>();
    for (int i = 0; i < numberOfRows; i++) {
        List<Cell> row = new ArrayList<>();
        for (int j = 0; j < numberOfColumns; j++) {
            Cell cell = new Cell();
            row.add(cell);
            table.addCell(cell);

        }
        cells.add(row);
    }

    // Add some text diagonally
    cells.get(0).get(0).add(new Paragraph("Hello"));
    cells.get(1).get(1).add(new Paragraph("diagonal"));
    cells.get(2).get(2).add(new Paragraph("world!"));

生成的 PDF 如下所示: