java pdf 页眉_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);

//保存文档

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值