2

我一直在网上搜索如何在 java 中使用 itextpdf 制作或设置页脚。到目前为止,我还没有找到任何关于如何做到这一点的信息。我看过一些关于如何使用和设置标题的文章。但不是页脚。这是一个示例代码

Document document = new Document(PageSize.LETTER);

Paragraph here = new Paragraph();
Paragraph there = new Paragraph();

Font Font1 = new Font(Font.FontFamily.HELVETICA, 9, Font.BOLD);

here.add(new Paragraph("sample here", Font1));
there.add(new Paragraph("sample there", Font1));
//footer here 

document.add(here);
document.add(there);
document.add(footer);
4

2 回答 2

5

要实现页眉和页脚,您需要实现一个扩展
iText API 的 PdfPageEventHelper 类的 HeaderFooter 类。然后覆盖onEndPage()设置页眉和页脚。在此示例中,我name在页眉中设置页眉和页脚中的“页数”。

在 pdf 创建端代码中,您需要使用HeaderAndFooter如下类:

    Document document = new Document(PageSize.LETTER);
    PdfWriter writer = PdfWriter.getInstance(document, "C:\sample.pdf");
    //set page event to PdfWriter instance that you use to prepare pdf
    writer.setPageEvent(new HeaderAndFooter(name));
    .... //Add your content to documne here and close the document at last

    /*
     * HeaderAndFooter class
     */
    public class HeaderAndFooter extends PdfPageEventHelper {

    private String name = "";


    protected Phrase footer;
    protected Phrase header;

    /*
     * Font for header and footer part.
     */
    private static Font headerFont = new Font(Font.COURIER, 9,
            Font.NORMAL,Color.blue);

    private static Font footerFont = new Font(Font.TIMES_ROMAN, 9,
            Font.BOLD,Color.blue);


    /*
     * constructor
     */
    public HeaderAndFooter(String name) {
        super();

        this.name = name;


        header = new Phrase("***** Header *****");
        footer = new Phrase("**** Footer ****");
    }


    @Override
    public void onEndPage(PdfWriter writer, Document document) {

        PdfContentByte cb = writer.getDirectContent();

        //header content
        String headerContent = "Name: " +name;

        //header content
        String footerContent = headerContent;
        /*
         * Header
         */
        ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase(headerContent,headerFont), 
                document.leftMargin() - 1, document.top() + 30, 0);

        /*
         * Foooter
         */
        ColumnText.showTextAligned(cb, Element.ALIGN_RIGHT, new Phrase(String.format(" %d ", 
                writer.getPageNumber()),footerFont), 
                document.right() - 2 , document.bottom() - 20, 0);

    }

}

希望能帮助到你。我曾在其中一个联名中使用过这个。

于 2013-04-10T07:00:46.983 回答
0

带有 itextpdf 5 的小演示

        final ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
        final Document document = new Document();
        final PdfContentByte cb = PdfWriter.getInstance(document, byteStream).getDirectContent();

        final Paragraph footerTitleParagraph = new Paragraph();
        footerTitleParagraph.add("footer title with no style");
        ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footerTitleParagraph, document.right()/2, document.bottom()-15, 0);

        final Paragraph footerSubTitleParagraph = new Paragraph("footer sub-title with style", FOOTER_FONT_SUB));
        ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footerSubTitleParagraph, document.right()/2, document.bottom()-25, 0);
于 2022-01-11T14:04:39.587 回答