【发布时间】:2011-12-11 13:56:39
【问题描述】:
我无法获取在页面页眉中添加 Y 的页码 X 的代码。
【问题讨论】:
-
这里我只能得到页码但是我怎样才能在页眉中得到 Y 的页码 X?试着帮帮我?
-
它可能对你有帮助,请参考这个,stackoverflow.com/questions/759909/…
我无法获取在页面页眉中添加 Y 的页码 X 的代码。
【问题讨论】:
您可以通过 PdfTemplate 来做到这一点。 首先,将 PdfPageEventHelper 附加到 PdfWriter
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream("C:/path/to/pdf"));
writer.setPageEvent(new PageEventListener());
然后定义类PageEventListener 来扩展PdfPageEventHelper。
在该类中,您可以覆盖 onOpenDocument、onEndPage 和 onCloseDocument 方法,并且可以使用 PdfTemplate 以 X of Y 的形式添加页码。
工作代码的详细信息here,在 chapter05 目录,MovieCountries1.java
来源。
【讨论】:
创建一个类似下面的类
public class HeaderAndFooter extends PdfPageEventHelper {
public void onEndPage (PdfWriter writer, Document document) {
Rectangle rect = writer.getBoxSize("art");
switch(writer.getPageNumber() % 2) {
case 0:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_RIGHT, new Phrase("header"),
rect.getBorderWidthRight(), rect.getBorderWidthTop(), 0);
break;
case 1:
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase(String.format("%d", writer.getPageNumber())),
300f, 62f, 0);
break;
}
ColumnText.showTextAligned(writer.getDirectContent(),
Element.ALIGN_CENTER, new Phrase(String.format("%d", writer.getPageNumber())),
(2f + 4f) / 2, 2f - 18, 0);
}}
在生成的 pdf 类中使用以下一个
bytearrayoutputstream = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4, 60, 60, 120, 80);
PdfWriter writer = PdfWriter.getInstance(document, bytearrayoutputstream );
HeaderAndFooter event = new HeaderAndFooter();
writer.setPageEvent(event);
document.open();
根据您的文档高度和宽度更改标题对齐宽度
【讨论】: