1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
頁腳表的第一列非常小。實(shí)際上太小以至于較大的頁碼會自動導(dǎo)致?lián)Q行。因此,通過替換為第一列提供更多空間
footer.setWidths(new?int[]{2,?24});
例如
footer.setWidths(new?int[]{2,?20});
在評論中,您對擴(kuò)大第一欄的提議做出了回應(yīng)
但即使將其更改為僅多一點(diǎn),也會增加不必要的空間。它給出的輸出類似于第 10 頁,共 10 頁。我的意思是在“第 10 頁”之后,還有更多的空間。
為了減少差距,您可以右對齊第一列的內(nèi)容,例如通過添加
footer.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
在添加"Page %d of"
單元格之前。
因此,
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);
? ? }
}
(CreateFooter輔助方法)
100 頁文檔的結(jié)果:
...
添加回答
舉報(bào)