我向页面添加了一堆内容,例如document.add(p);
,然后我使用文档添加一个填充两列的表格here http://itextpdf.com/examples/iia.php?id=91。在这个过程中,我使用:
column.setSimpleColumn(
x[count][0], document.bottom(),
x[count][1], document.top() - height - 10);
其中高度设置为 0。这会将表格放置在从文档顶部开始的列中。当然,我想做的是将列直接添加到写入文档的最后一个内容的下方(例如document.add(p);
)。如果我知道页面上到目前为止消耗的高度,我可以手动输入正确的高度height
价值和一切工作正常。
问题是,文档中写入的内容取决于很多条件,所以我想简单地执行一个命令来告诉我到目前为止文档中(当前页面)消耗了多少高度,这样我就可以放height
适当地。有没有办法在 iText 中执行此操作(这样我就不需要跟踪添加到页面中的每个单独元素的高度)?
可以通过三种方式向 PDF 添加内容:
使用 document.add();
在这种情况下,iText 根据页面大小和您定义的边距来决定添加内容的位置。
有一个很古老的方法叫做getVerticalPosition()
这需要一个boolean
作为参数。我并不为这种方法感到自豪,因为它是getter方法不仅会在使用一系列后为您提供页面上的 Y 位置document.add()
操作时,它还可以更改当前的 Y 位置(这不是getter方法应该做)。
如果你通过了false
作为参数,它会给你当前的 Y,这可能是最后一个基线的位置Chunk
你已经添加了。
如果你通过了true
作为参数,该方法将首先添加换行符,并为您提供要添加的“下”文本行的基线位置。
使用列文本
ColumnText 是一个可以添加的对象Elements
。然后,您可以使用绝对坐标定义列并调用go()
方法。这go()
方法将渲染内容,您可以使用返回值来查看内容是否适合矩形。您可以使用getYLine()
方法查找最后添加的内容的 Y 坐标。
使用 writeSelectedRows()
此方法仅在您使用时才有效PdfPTable
对象。
这writeSelectedRows()
方法可以将行和列的选择添加到从特定位置开始的页面x
and y
协调。
它返回一个float
为您提供添加的最后一行的底部边框的 Y 位置的值。
如果您想在添加表格之前知道表格需要多少垂直空间writeSelectedRows()
,
您需要首先计算要添加的行的高度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)