-1

我正在创建一个 pdf 文件,显示所有员工及其工资的列表。在页面的末尾,它显示了所有工资的总和。

我正在使用 for 循环向表中添加多行。

问题是:在最后一行,总工资不适合在同一页上,它显示在下一页上。

那么有什么方法可以计算页面的高度,然后修复每个单元格的高度?然后相应地限制行数。

这样在页面的末尾,我可以显示总行数并从下一页进一步记录。

4

1 回答 1

2

计算页面的高度:嗯......您在创建Document对象时决定页面的大小。你可以选择任何你想要的尺寸。

计算 a 的高度:我的书PdfPTable的第 4 章对此进行了解释。创建 a时,会将对象添加到仅存在于内存中且对页面大小一无所知的对象中。默认情况下,宽度表示为您将添加. 只有当您添加到特定时,才会计算确切的宽度和高度(这对您来说为时已晚)。PdfPTablePdfPCellPdfPTablePdfPTableDocument

如果你想提前知道高度,你需要定义一个绝对宽度(不是百分比)。具有相同内容和不同宽度的表格将具有不同的高度。定义绝对宽度是这样完成

table.setTotalWidth(width);
table.setLockedWidth(true);

在此代码段中(取自TableHeight示例),width等于页面宽度减去左右边距。您在创建Document对象时定义页面的宽度和边距。默认情况下,页面大小为 A4,因此默认宽度为 595 个用户单位,默认页边距为 36 个用户单位。

因此,解决您的问题的一种方法是在循环中添加行并使用该方法计算每行getRowHeight()的高度或使用该方法计算整个表格的高度getTotalHeight()(如果您省略设置总高度,两种方法都将返回 0 )。如果您发现没有足够的空间来添加摘要行,您可以使用该deleteLastRow()方法删除最后一行并在下一页的新表中重新创建它。

这是一种解决方案。另一种解决方案可能是使用表格和单元格事件,但这更难以解释。

于 2013-04-04T13:08:42.650 回答