以下是itex给pdf每页页脚添加页数代码,具体参数根据实际调整
public void print(Object object, HttpServletResponse response) {
Document document = null;
try {
//创建pdf文档
document = new Document(PageSize.A4);
document.setMargins(40, 15, 70, 20);
PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream());
pdfWriter.setViewerPreferences(PdfWriter.PageModeUseThumbs);
//添加页脚
FooterEvent footerEvent = new FooterEvent();
pdfWriter.setPageEvent(footerEvent);
document.open();
//渲染数据
//。。。
} catch (Exception e) {
throw new RuntimeException("打印预览失败:" + e.getMessage());
} finally {
document.close();
}
}
public static class FooterEvent extends PdfPageEventHelper {
//总页数
PdfTemplate totalPage;
//字体
Font font;
{
try {
font = new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 9f);
} catch (DocumentException | IOException e) {
e.printStackTrace();
}
}
//打开文档时,创建一个总页数的模版
public void onOpenDocument(PdfWriter writer, Document document) {
PdfContentByte cb = writer.getDirectContent();
totalPage = cb.createTemplate(50, 9);
}
@Override
public void onEndPage(PdfWriter writer, Document document) {
//创建一个两列的表格
PdfPTable table = new PdfPTable(2);
try {
table.setTotalWidth(PageSize.A4.getWidth());//总宽度为A4纸张宽度
table.setLockedWidth(true);//锁定列宽
table.setWidths(new int[]{50, 50});//设置每列宽度
PdfPCell cell = new PdfPCell(new Phrase(document.getPageNumber() + " /", font));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);//设置水平右对齐
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
cell.disableBorderSide(15);//隐藏全部边框
table.addCell(cell);
PdfPCell cell1 = new PdfPCell(Image.getInstance(totalPage));//共 页
cell1.setHorizontalAlignment(Element.ALIGN_LEFT);//设置水平左对齐
cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
cell1.disableBorderSide(15);//隐藏全部边框
table.addCell(cell1);
table.writeSelectedRows(0, -1, 0, 30, writer.getDirectContent());
} catch (Exception e) {
throw new ExceptionConverter(e);
}
}
public void onCloseDocument(PdfWriter writer, Document document) {
String text = "" + writer.getPageNumber();
ColumnText.showTextAligned(totalPage, Element.ALIGN_MIDDLE, new Paragraph(text, font), 0, 0, 0);
}
}