本教程详细介绍如何使用Spire.PDF for Java在新建PDF文档时添加页眉页脚。
import java.awt.*;
import java.awt.geom.Dimension2D;
import com.spire.pdf.*;
import com.spire.pdf.automaticfields.PdfAutomaticField;
import com.spire.pdf.automaticfields.PdfCompositeField;
import com.spire.pdf.automaticfields.PdfPageCountField;
import com.spire.pdf.automaticfields.PdfPageNumberField;
import com.spire.pdf.graphics.*;
public class HeaderFooter {
    public static void main(String[] args) throws Exception {
        //创建 PdfDocument 对象
        PdfDocument doc = new PdfDocument();
        //创建PdfMargins对象, 并设置的页边距
        PdfMargins margin = new PdfMargins(60,60,40,40);
        //调用 addHeaderAndFooter()方法添加页眉页脚
        addHeaderAndFooter(doc, PdfPageSize.A4, margin);
        //在文档中添加两页并写入文字
        PdfPageBase page1 = doc.getPages().add();
        PdfPageBase page2 = doc.getPages().add();
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体",Font.PLAIN,14),true);
        String text1 = "Spire.PDF 示例";
        String text2 = "添加PDF页眉页脚";
        page1.getCanvas().drawString(text1, font, PdfBrushes.getBlack(),0,0);
        page2.getCanvas().drawString(text2, font, PdfBrushes.getBlack(),0,0);
        //保存文档
        doc.saveToFile("output/headerFooter.pdf");
        doc.close();
    }
    static void addHeaderAndFooter(PdfDocument doc, Dimension2D pageSize, PdfMargins margin) {
        PdfPageTemplateElement header = new PdfPageTemplateElement(margin.getLeft(), pageSize.getHeight());
        doc.getTemplate().setLeft(header);
        PdfPageTemplateElement topSpace = new PdfPageTemplateElement(pageSize.getWidth(), margin.getTop());
        topSpace.setForeground(true);
        doc.getTemplate().setTop(topSpace);
        //添加页眉
        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("宋体",Font.PLAIN,10),true);
        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
        String label = "成都冰蓝科技有限公司";
        Dimension2D dimension2D = new Dimension();
        dimension2D.setSize(font.measureString(label, format));
        float y = topSpace.getHeight() - font.getHeight() - 1;
        PdfPen pen = new PdfPen(new PdfRGBColor(Color.black), 0.75f);
        topSpace.getGraphics().setTransparency(0.5f);
        topSpace.getGraphics().drawLine(pen, margin.getLeft(), y, pageSize.getWidth() - margin.getRight(), y);
        y = y - 1 - (float) dimension2D.getHeight();
        topSpace.getGraphics().drawString(label, font, PdfBrushes.getBlack(), margin.getLeft(), y, format);
        PdfPageTemplateElement rightSpace = new PdfPageTemplateElement(margin.getRight(), pageSize.getHeight());
        doc.getTemplate().setRight(rightSpace);
        //添加显示当前页及总页数的域作为页脚
        PdfPageTemplateElement footer = new PdfPageTemplateElement(pageSize.getWidth(), margin.getBottom());
        footer.setForeground(true);
        doc.getTemplate().setBottom(footer);
        y = font.getHeight() + 1;
        footer.getGraphics().setTransparency(0.5f);
        footer.getGraphics().drawLine(pen, margin.getLeft(), y, pageSize.getWidth() - margin.getRight(), y);
        y = y + 1;
        PdfPageNumberField pageNumber = new PdfPageNumberField();
        PdfPageCountField pageCount = new PdfPageCountField();
        PdfCompositeField pageNumberLabel = new PdfCompositeField();
        pageNumberLabel.setAutomaticFields(new PdfAutomaticField[]{pageNumber, pageCount});
        pageNumberLabel.setBrush(PdfBrushes.getBlack());
        pageNumberLabel.setFont(font);
        format = new PdfStringFormat(PdfTextAlignment.Right);
        pageNumberLabel.setStringFormat(format);
        pageNumberLabel.setText("第{0}页共{1}页");
        pageNumberLabel.setBounds(footer.getBounds());
        pageNumberLabel.draw(footer.getGraphics(), - margin.getLeft(), y);
    }
}添加的PDF页眉页脚示例图:

 



 
					



