Table.getNumberOfRows() 的行为

Behaviour of Table.getNumberOfRows()

iText Table.getNumberofRows() fn returns table 中的行数,并且通常按预期工作。如果最后一行只包含部分单元格,它仍然算作一行,这是有道理的。但是,如果它不包含 any 单元格,我不认为那是一行,所以它不应该算在内。不幸的是它确实如此。例如,当首次创建 Table 时,getNumRows() returns 1 而不是 0。(这是因为在其构造函数中,它(明智地)调用了一个准备空行的 init fn。)

现在,如果您将一整行单元格添加到 table,getNumRows() 仍然是 returns 1,因此您无法区分空的 table 和有效的单线。解决方法是在添加每行单元格后调用 startNewRow(),并处理 getNumRows() 太大的后果。但是,在 7.0.2 上,此解决方法已开始生成有关 Last row is not completed. Table bottom border may collapse as you do not expect it 的警告消息。没看错,就是不好看

您能否更新 iText 以将没有单元格的行视为根本没有行?

弗农。

我相信您可以使用 table.isEmpty() 来检查 Table 是否有一些 children(单元格)。如果结果为真,则该行确实存在。

但幸运的是(感谢您的建议)我们已经解决了这个问题(参见 7.0.3-SNAPSHOT)。现在 Table 将有空行列表,直到添加一个单元格。所以 table.getNumberOfRows() 的结果将是正确的。