如何利用iText添加多个页眉和页脚的pdf(How to add multiple headers

2019-07-20 05:22发布

在我的PDF我需要有一个以上的报头和footer.In头我想标题上的中心左边和一些文字标题。

同样,在页脚我需要打印在左边我的公司名称,页码上的中心,就在右侧在我的表内容的一些信息。

我见过这么多的职位,但我没有得到正确的理念,为创建this.Somebody请帮我一些示例代码snippets.Thanks

Answer 1:

页眉和页脚应该使用页面事件“被添加。 如果你需要一些例子,只是寻找关键字页眉 / 页脚的官方网站。

只要创建一个扩展类PdfPageEventHelper和实现onEndPage()方法。 谁阅读文档人不犯常识性错误使用onStartPage()方法,但也许你忽略了这一点,所以我加入这个作为一个额外的警告。

您的类的实例添加到与该PdfWriter对象setPageEvent()方法。

我不知道如果我理解你所说的“多”头的意思。 如果你有多个页面事件实现,您可以使用添加所有setPageEvent()方法,它们都将被执行。 如果你想从一个页面事件实现切换到另一个,则需要使用setPageEvent(null)第一。

也许你想的头是不同的页面不同,只需使用一个成员变量在你的页面事件实现,并改变它前进的道路。 在命名的书的例子之一MovieHistory2 ,对于标头中的文本存储在一个String命名的数组header

标题的位置取决于页码:

    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, header[0],
                    rect.getRight(), rect.getTop(), 0);
            break;
        case 1:
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_LEFT, header[1],
                    rect.getLeft(), rect.getTop(), 0);
            break;
        }
        ColumnText.showTextAligned(writer.getDirectContent(),
                Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)),
                (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
    }

对于连页码,头被添加到右边; 奇数页码的左边。 页脚为中心,你可以看到。

你还别说一个头表。 如果你想使用一个表,请大家看看MovieCountries1例子。

你说:“我已经见过这么多的职位,但我没有得到正确的理念,为创建这个。” 从中提取的代码片段,我指的是 - 你会通过阅读文档,更具体的书的第5章“第二版的iText在行动”得到正确的想法。



文章来源: How to add multiple headers and footers in pdf using itext
标签: java itext