" y"第x页;在表格中,如何在表格内而不是页面边框中对齐文本?

时间:2017-04-24 03:00:35

标签: itext7

我能够使用Chapter 7: Handling events; setting viewer preferences and writer properties 解决" Y"的第X页的构建基块示例创建y的第x页。问题即可。在这个例子中," y的页面x的文本#34;通过Canvas与页面边框对齐。但经常是y" x" x应该放在这样的表格中: enter image description here

在这种情况下,文本应在表格内排列,如何做到这一点? 在我的申请中,包括y页x的表应显示在每页上并仍然在固定位置,即在页面的右上位置。并且整个文档的表格格式和大小不会改变。

1 个答案:

答案 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();

结果如下:

enter image description here