我正在iText中创建一个列出日期事件的表 . 如果日期有多个事件,我将日期单元格的rowspan属性设置为事件数 . 我目前正在为每个事件使用一行,因为我想显示事件的其他信息,并希望保持一致 . 基本上我的表格看起来像这样:
Date | Event | Details
--------+-----------+---------------
date 1 | event 1 | details 1
--------+-----------+---------------
date 2 | event 2 1 | more
| | details 2 1
+-----------+---------------
| event 2 2 | details 2 2
--------+-----------+---------------
包含 date 2
的单元格的行数为2 .
我在循环中使用 ColumnText.go()
添加表 .
如果我将表写入文档并且 event 2 1
只剩下足够的空间,则 event 2 2
将转到新页面 . 如何在添加 date 2
之前强制新页面?
使用 PdfPTable.setSplitLate(true)
似乎不会影响多行单元格 . 也没有将 date 2
单元的固定高度设置为两行的组合高度 .
-
一个解决方案是使用第2列和第3列的嵌套表(并将第2列和第3列视为一列)
-
另一个使用't work correctly in the version of iText I'的解决方案是使用
PdfPTable.writeSelectedRows()
并仅写入适合页面的(组合)行 . 问题是,通过这种方式忽略行 Span 并且Date
单元格看起来像tey只跨越一行 .
还有其他方法吗?
1 回答
您可以为每一行创建一个表,并使用
PdfPTable.setKeepTogether(true)
,甚至可以在iText 2.1.7中使用,但我不建议保留该版本 . 下面是一个示例,其中outputFile
是正在创建PDF文件的File类型变量 .老实说,我认为嵌套表是更好的主意 .