如何在Java中使用itext在Header中添加页码?

时间:2011-12-11 13:56:39

标签: java itext

我无法获得在页面页眉中添加Y页码X的代码。

2 个答案:

答案 0 :(得分:0)

您可以通过 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 方法,并且可以使用{{1}以Y的形式添加页码}。 第05章目录中的工作代码here的详细信息,MovieCountries1.java 源。

答案 1 :(得分:0)

创建一个类似下面的类

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();

根据文档的高度和宽度更改标题对齐宽度