我能够使用Chapter 7: Handling events; setting viewer preferences and writer properties 解决" Y"的第X页的构建基块示例创建y的第x页。问题即可。在这个例子中," y的页面x的文本#34;通过Canvas
与页面边框对齐。但经常是y" x" x应该放在这样的表格中:
在这种情况下,文本应在表格内排列,如何做到这一点? 在我的申请中,包括y页x的表应显示在每页上并仍然在固定位置,即在页面的右上位置。并且整个文档的表格格式和大小不会改变。
答案 0 :(得分:1)
首先,为了适应整个表格,您需要增加Document
的底部边距:
Document document = new Document(pdf);
document.setBottomMargin(100);
之后,您仍然可以使用Canvas
添加表而不是段落。我将根据您提到的PageXofY
示例作出答案。
首先,创建一个通常的Table
:
Table table = new Table(UnitValue.createPercentArray(new float[] {50, 50}));
table.addCell(new Cell(4, 1));
table.addCell(new Cell().add("Filename: "));
table.addCell(new Cell().add("Issue date: "));
Paragraph pageXofY = new Paragraph().
add("Page " + String.valueOf(pageNumber) + " of ").
add(new Image(placeholder));
table.addCell(new Cell().add(pageXofY));
table.addCell(new Cell().add("Location: "));
请注意,我们仍然使用占位符FormXObject
来存储总页数。
将side
更改为字体大小,在我们的案例中为12
。像这样创建占位符:
placeholder = new PdfFormXObject(new Rectangle(0, 0, 2 * side, side));
对writeTotal()
方法稍作更改。文本的y
位置已更改为-descent
:
public void writeTotal(PdfDocument pdf) {
Canvas canvas = new Canvas(placeholder, pdf);
canvas.showTextAligned(String.valueOf(pdf.getNumberOfPages()),
0, -descent, TextAlignment.LEFT);
}
现在您需要将此表添加到页面上的适当位置:
float marginX = 36;
Canvas canvas = new Canvas(pdfCanvas, pdf, new Rectangle(marginX, 10, pageSize.getWidth() - marginX * 2, 100));
canvas.add(table);
pdfCanvas.release();
结果如下: