如何找出页面上当前的光标位置?

时间:2015-10-30 03:24:14

标签: itext

我在页面中添加了一堆内容,例如document.add(p);,然后我添加了一个使用文档here填充两列的表。在这个过程中,我使用:

column.setSimpleColumn(
   x[count][0], document.bottom(),
   x[count][1], document.top() - height - 10);

其中height设置为0.这会将表放在从文档顶部开始的列中。当然,我想要做的是在最后写入文档的内容下面添加列(例如document.add(p);)。如果我知道页面上到目前为止消耗的高度,我可以手动输入正确的height值,并且工作正常。

问题是,文档中写的内容取决于很多条件,所以我想简单地执行一个命令来告诉我到目前为止在文档中消耗了多少高度(对于当前页面)所以我可以适当地设置height。有没有办法在iText中执行此操作(这样我就不需要跟踪添加到页面中的每个元素的高度了?)

1 个答案:

答案 0 :(得分:2)

有三种方法可以向PDF添加内容:

使用document.add();

在这种情况下,iText会根据您定义的页面大小和页边距决定添加内容的位置。

有一个名为boolean的非常古老的方法,它以document.add()为参数。我并不为这种方法感到骄傲,因为它是一种 getter 方法,它不仅可以在使用一系列false操作后在页面上显示Y位置,还可以改变当前的Y位置(这不是 getter 方法应该做的)。

如果您将Chunk作为参数传递,它会为您提供当前的Y,这可能是您添加的最后true的基线位置。

如果您将Elements作为参数传递,该方法将首先添加换行符,并为您提供" next"的基线位置。你要添加的文字行。

使用ColumnText

ColumnText是您可以添加go()的对象。然后,您可以使用绝对坐标定义列并调用go()方法。 getYLine()方法将呈现内容,您可以使用返回值来查看内容是否适合矩形。您可以使用PdfPTable方法查找已添加的最后一段内容的Y坐标。

使用writeSelectedRows()

此方法仅在使用writeSelectedRows()个对象时有效。 x方法可以向从特定yfloat坐标开始的页面添加选择的行和列。 它返回writeSelectedRows()值,该值为您提供添加的最后一行的下边框的Y位置。 如果您想在使用{{1}}添加表格之前知道表格需要多少空间, 您需要先计算要添加的行的高度。