private static class IndexEvent extends PdfPageEventHelper {
@Override
public void onOpenDocument(PdfWriter writer, Document document) {
try {
tpl = writer.getDirectContent().createTemplate(800, 100);
bf = BaseFont.createFont("/font" + CheckVouchExportConstant
.FONT_FILE,BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
} catch(Exception e) {
throw new ExceptionConverter(e);
}
}
@Override
public void onEndPage(PdfWriter writer, Document document) {
// 在每页结束的时候把“第x页”信息写到模版指定位置
PdfContentByte cb2 = writer.getDirectContent();
cb2.saveState();
String text2 = "监盘人:__________________ 盘点日期:__________________";
cb2.beginText();
cb2.setFontAndSize(bf, 10);
cb2.setTextMatrix(180, 5); // 定位“第x页,共” 在具体的页面调试时候需要更改这xy的坐标
cb2.showText(text2);
cb2.endText();
cb2.stroke();
cb2.restoreState();
cb2.closePath(); // sanityCheck();
PdfContentByte cb = writer.getDirectContent();
cb.saveState();
String text = "-" + writer.getPageNumber();
cb.beginText();
cb.setFontAndSize(bf, 10);
cb.setTextMatrix(550, 5); // 定位“第x页,共” 在具体的页面调试时候需要更改这xy的坐标
cb.showText(text);
cb.endText();
cb.addTemplate(tpl, 534, 5); //定位“y页” 在具体的页面调试时候需要更改这xy的坐标
cb.stroke();
cb.restoreState();
cb.closePath(); // sanityCheck();
}
@Override
public void onCloseDocument(PdfWriter writer, Document document) {
// 关闭document的时候获取总页数,并把总页数按模版写道之前预留的位置
tpl.beginText();
tpl.setFontAndSize(bf, 10);
tpl.showText(Integer.toString(writer.getPageNumber() - 1));
tpl.endText();
tpl.closePath(); // sanityCheck();
}
}
// 在分页需要分页的程序里 做分页页面标记,必须在 document.open(); 之前
writer.setPageEvent(new IndexEvent());
网友评论