页眉页脚在文档中很常用,下面的示例将演示通过Java程序添加页眉页脚到PDF文档的方法。
工具/原料
Free Spire.PDF for Java v2.0.0(免费版)
jar文件导入
1、步骤 1:在Java程序中新建一个文件夹可命名为Lib。下载安装包后,解压,訇咀喃谆将解压后的文件夹下的子文件夹lib中的Spire.Pdf.jar和Spire.Common.jar怎剑词阶两个文件复制到新建的文件夹下,如下图:
2、步骤 2:建好文件夹后,引用两个文件:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。
Java代码
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、运行程序后,生成文档。页眉页脚生成效果如下: