添加PDFPTable到页面底部的iText
问题描述:
我想添加一个表作为包含所有版权文本,页码等,页脚,但我无法找到将接受PdfPTable
添加PDFPTable到页面底部的iText
一个短语有这样的代码:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase(
String.format("%d", document.getPageNumber())),
(document.getPageSize().getLeft() + document.getPageSize().getRight())/2,
document.getPageSize().getBottom() + 18, 0);
答
PdfPTable
类有一个方法writeSelectedRows()
,可用于在绝对位置添加(选择列和行)行。
实例:
- http://itextpdf.com/examples/iia.php?id=89在绝对位置添加行。
- http://itextpdf.com/examples/iia.php?id=90在绝对位置添加一列/行的选择。
-
http://itextpdf.com/examples/iia.php?id=91替代解决方案,您可以在
ColumnText
对象中包装表格。
答
发表布鲁诺的例子是一个很好的指针,这里没有神奇的数字为例:
private void writeFooterTable(PdfWriter writer, Document document, PdfPTable table) {
final int FIRST_ROW = 0;
final int LAST_ROW = -1;
//Table must have absolute width set.
if(table.getTotalWidth()==0)
table.setTotalWidth((document.right()-document.left())*table.getWidthPercentage()/100f);
table.writeSelectedRows(FIRST_ROW, LAST_ROW, document.left(), document.bottom()+table.getTotalHeight(),writer.getDirectContent());
}
这将在底部的文档的页边距内写PdfPTable在底部您有任何文字重叠。如果您希望在边距中编写表格,请使用:document.bottom()
而不是document.bottom()+table.getTotalHeight()
。
由于一项相关注意,如果您下面这个链接的例子中,“艺术”盒子似乎并不需要与神奇数字36,54,559,788对应到:
document.left(), document.bottom(), document.right(), document.top()