代码之家  ›  专栏  ›  技术社区  ›  Weddy

如何在使用itextpdf生成pdf文件时制作页脚

  •  2
  • Weddy  · 技术社区  · 13 年前

    我一直在网上搜索如何在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);
    
    2 回复  |  直到 13 年前
        1
  •  5
  •   Pranav Kumar    13 年前

    为了实现页眉和页脚,您需要实现一个扩展
    iText API的PdfPageEventHelper类。然后覆盖 onEndPage() 设置页眉和页脚。在这个例子中,我正在设置 name 在页眉中,在页脚中为“页面mumber”。

    在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);
    
        }
    
    }
    

    希望能有所帮助。我在其中一个词中使用过这个词。

        2
  •  0
  •   Andrea Ciccotta    4 年前

    带有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);