0

我正在通过 ItextSharp 构建一个 pdfptable,但我需要知道,当我添加单元格时,我在页面中的 Y 位置。单元格具有可变高度。我需要知道它以避免你在表中放置一个新的“中断标题”,如果这会出现在最后一个表行上,因为它应该出现在一个新页面上(根据客户请求)。我尝试了 writer.getverticalPosition() 但在组成表格时似乎不可靠。

有没有办法知道它?

4

1 回答 1

1

你的问题有矛盾。让我解释什么没有意义。

您创建一个PdfPTable,假设您有一个名为table. 当您将单元格添加到 时table,对象会增长。大量数据存储在内存中。

现在你说:我想在添加单元格时知道页面上行的 Y 位置。

哪一页?甚至可能没有页面?只要您构建table对象,就没有页面,没有 Y 位置。当添加到宽度为 400pt 的页面时,一个表格的高度可能为 200pt。当添加到宽度为 200pt 的页面时,同一个表格的高度可能为 400pt。直到您将table对象添加到 aDocument中,表格才会得到它的形状。

如果您想确保“标题”不是页面上的最后一行,您应该将表格分成较小的部分。创建一个子表并将其添加到文档中。现在使用getVerticalPosition()并检查还剩多少空间。如果下一个子表的前 X 行没有足够的空间,则移动到 anewPage()并在那里添加下一个表,否则在当前页面上添加表。

如果您正确定义宽度,没有人会看到您添加了多个表格:看起来好像您添加了一个大表格而不是不同的小表格。如果您不知道如何计算子表中的行高,请注意您需要定义表的总宽度并锁定宽度。由于上面解释的原因,如果没有任何关于表格宽度的信息,任何软件都无法计算表格的高度。

于 2013-02-21T15:57:33.323 回答