页脚表的第一列非常小。实际上太小了,较大的页码会自动导致换行。因此,通过替换为第一列提供更多空间
footer.setWidths(new int[]{2, 24});
by e.g.
footer.setWidths(new int[]{2, 20});
您在评论中回应了扩大第一栏的提议
但即使只增加一点,也会增加不必要的空间。它给出的输出类似于第 10 页(共 10 页)。我的意思是在“第 10 页”之后,还有更多空间。
要减少间隙,您可以右对齐第一列的内容,例如通过增加
footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
在添加之前"Page %d of"
cell.
Thus,
private void addFooterImproved(PdfWriter writer) {
PdfPTable footer = new PdfPTable(2);
try {
// set defaults
footer.setWidths(new int[]{2, 20});
footer.setWidthPercentage(50);
footer.setTotalWidth(527);
footer.setLockedWidth(true);
footer.getDefaultCell().setFixedHeight(30);
footer.getDefaultCell().setBorder(Rectangle.TOP);
footer.getDefaultCell().setBorderColor(BaseColor.RED);
footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
footer.addCell(new Phrase(String.format("Page %d of", writer.getPageNumber()), new Font(Font.FontFamily.HELVETICA, 8)));
// add placeholder for total page count
PdfPCell totalPageCount = new PdfPCell(total);
totalPageCount.setBorder(Rectangle.TOP);
totalPageCount.setBorderColor(BaseColor.GREEN);
footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
footer.addCell(totalPageCount);
// write page
PdfContentByte canvas = writer.getDirectContent();
canvas.beginMarkedContentSequence(PdfName.ARTIFACT);
footer.writeSelectedRows(0, -1, 34, 20, canvas);
canvas.endMarkedContentSequence();
} catch(DocumentException de) {
throw new ExceptionConverter(de);
}
}
(创建页脚 https://github.com/mkl-public/testarea-itext5/blob/master/src/test/java/mkl/testarea/itext5/content/CreateFooter.java#L152辅助方法)
100 页文档的结果:
...