7步制作Itext5页眉页脚pdf实现第几页共几页(四)

2014-11-24 09:17:14 · 作者: · 浏览: 2
ministrator
* @version
* @since JDK 1.5
* @see
*/
public class PdfReportM1HeaderFooter2 extends PdfPageEventHelper {
String header;
int presentFontSize = 12;
PdfTemplate total;
BaseFont bf = null;
Font fontDetail = null;
public void setHeader(String header) {
this.header = header;
}
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
public void onEndPage(PdfWriter writer, Document document) {
Rectangle pageSize = writer.getBoxSize("art");
try {
if (bf == null) {
bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
}
if (fontDetail == null) {
fontDetail = new Font(bf, presentFontSize, Font.NORMAL);// 数据体字体
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int pageN = writer.getPageNumber();
String text = "第 " + pageN + "页/共 ";
// 页眉
ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, new Phrase("我是页眉,土豪我们做朋友吧",fontDetail), document.left(), document.top() + 20, 0);
PdfPTable table = new PdfPTable(2);
try {
table.setWidths(new int[] { 1, 1 });
table.setWidthPercentage(100F);// 占据百分百宽度
table.setTotalWidth(pageSize.getRight() - pageSize.getLeft() - 100);
PdfPCell cell1 = new PdfPCell(new Phrase(text, fontDetail));
PdfPCell cell2 = new PdfPCell(Image.getInstance(total));
cell1.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell1.setBorder(Rectangle.NO_BORDER);
cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
cell2.setBorder(Rectangle.NO_BORDER);
table.addCell(cell1);
table.addCell(cell2);
table.writeSelectedRows(0, -1, document.left(), document.bottom(), writer.getDirectContent());
} catch (DocumentException de) {
throw new ExceptionConverter(de);
}
}
public void onCloseDocument(PdfWriter writer, Document document) {
try {
if (bf == null) {
bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
}
if (fontDetail == null) {
fontDetail = new Font(bf, presentFontSize, Font.NORMAL);// 数据体字体
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ColumnText.showTextAligned(total, Element.ALIGN_LEFT, new Phrase(String.format("%d页", writer.getPageNumber() - 1), fontDetail), 2, 2, 0);
}
}
这种只能自己去计算Y轴坐标,很容易不在一行。所以不如我的第一种方便。具体就看你使用了。