Java在PDF中插入页眉页脚

2025-09-25 19:42:37

1、步骤 1:在Java程序中新建一个文件夹可命名为Lib。下载安装包后,解压,将解压后的文件夹下的子文件夹lib中的Spire.Pdf.jar和Spire.Common.jar两个文件复制到新建的文件夹下,如下图:

Java在PDF中插入页眉页脚

2、步骤 2:建好文件夹后,引用两个文件:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。

Java在PDF中插入页眉页脚

1、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);       

        //保存文档

        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("Arial Unicode MS",Font.PLAIN,10),true);

        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);

        String label = "2018年 年度会议报告";

        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(), pageSize.getWidth() - margin.getLeft(), y);

    }

}

2、运行程序后,生成文档。页眉页脚生成效果如下:

Java在PDF中插入页眉页脚

Java在PDF中插入页眉页脚

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢