组成PdfPTable时的Y位置

时间:2013-02-21 15:32:10

标签: itextsharp

我正在通过ItextSharp构建一个pdfptable,但我需要知道,当我添加单元格时,我在页面中的Y位置。细胞具有可变的高度。 我需要知道它以避免在表中放置一个新的'Breaking title',如果这将在最后一个表行上,因为它应该在新页面上(在cust请求中)。 我尝试过writer.getverticalPosition(),但在编写表时似乎不可靠。

有没有办法知道它?

1 个答案:

答案 0 :(得分:1)

你的问题存在矛盾。让我解释一下没有意义的事情。

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

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

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

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

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