请看一下以下示例我的书的第四章,更具体地说是在Zhang例子。在此示例中,我有一个包含四列的表:(1) 年份、(2) 英文电影标题、(3) 中文电影标题和 (4) 片长。如果您查看生成的 PDF,您会发现该表是垂直分割的。
实现这一点需要更多的工作,而不是简单地添加一个表并允许 iText 决定如何在行之间拆分它。当您想要在列之间拆分时,您需要在代码中组织布局。这是使用以下方法完成的writeSelectedRows()) 方法。
在我的简单书籍示例中,我使用了以下几行:
// draw the first two columns on one page
table.writeSelectedRows(0, 2, 0, -1, 236, 806, canvas);
document.newPage();
// draw the remaining two columns on the next page
table.writeSelectedRows(2, -1, 0, -1, 36, 806, canvas);
首先,我绘制从索引 0 到索引 2 的列。索引 0 的列是第一列,索引 2 的列是不包括的第一列,即第三列。我绘制从索引 0(第一行)到 -1 的行。减一意味着:绘制所有剩余的行。
您还会在下一页上看到负一,其中我绘制索引为 2 的列(第三列),直到索引为 -1 的列(意思是:其余列)。
值 (236, 806) 和 (36, 806) 是坐标:这就是您希望表格开始的位置。您无法定义“结束坐标”。如果表格不适合页面,iText 将继续绘制表格,即使这意味着某些内容超出了页面的可见区域。这意味着使用此方法时必须非常小心:在添加表格之前需要计算行和列的宽度和高度,否则最终可能会出现表格的某些部分不可见的情况。