首先,爲了適應整個表,你會想增加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();
結果如下:
這是一個腳註表,它是在所有頁面的相同(除可變頁號的部分),或者是一個REGUL ar表中插入頁碼?請提供一些更完整的大綱,說明您要實現的目標,因爲實施取決於最終目標。 –
爲了擴展Alexey的評論:Y示例的X使用較低級別的api調用將文本內容寫入頁面中的絕對位置。如果您的表格在不同頁面上的大小或位置發生變化,這可能不是一個好方法。這就是爲什麼我們需要更多地瞭解項目的大綱和目標。 –
我更新了我的問題描述。該表格不會更改所有頁面的大小或位置。這將是非常友善的,如果你還可以告訴我,如果表格會改變立場,那麼解決方案是什麼?替換文字? – cao