【发布时间】:2013-05-07 20:37:54
【问题描述】:
我正在 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 列视为一列)
在我使用的 iText 版本中无法正常工作的另一种解决方案是使用
PdfPTable.writeSelectedRows()并仅写入适合页面的(组合)行。问题是,这样会忽略行跨度,Date单元格看起来只跨行。
还有其他方法吗?
【问题讨论】:
-
当前 iText 中一个可能的解决方案可能是
PdfPTable.keepRowsTogether(int [])- 不幸的是,它在我必须使用的 iText 版本中不可用 -
你用的是哪个版本?