Java 添加頁眉頁腳到PDF

頁眉和頁腳一般是顯示文檔的附加信息,經常使用來插入頁碼、時間、日期、我的信息、微標等。特別是其中插入的頁碼,經過這種方式可以快速定位所要查找的頁面。本文將經過使用Java程序來演示如何在PDF文檔中添加頁眉頁腳。
Spire.PDF沒有提供直接添加頁眉頁腳到PDF的方法。爲了實現此功能,我首先建立了drawHeader和drawFooter方法。如下代碼適用於大部分Word轉換成的PDF文檔,其頁邊距默認值爲上/下72磅,左/右90磅。因此若文檔頁邊距有所差別,可經過調整下文代碼中「X」「Y」值來獲取最佳效果。html

使用工具:Free Spire.PDF for Java(免費版)

Jar文件獲取及導入:

方法1:經過官網下載獲取jar包。解壓後將lib文件夾下的Spire.Pdf.jar文件導入Java程序。(以下圖)
安裝圖.pngjava

方法2:經過maven倉庫安裝導入。具體安裝教程詳見此網頁maven

代碼示例:

import com.spire.pdf.PdfDocument;  
import com.spire.pdf.automaticfields.PdfCompositeField;  
import com.spire.pdf.automaticfields.PdfPageCountField;  
import com.spire.pdf.automaticfields.PdfPageNumberField;  
import com.spire.pdf.graphics.*;  
import java.awt.*;  
import java.awt.geom.Dimension2D;  
import java.awt.geom.Rectangle2D;  
  
public class HeaderFooter {  
    public static void main(String[] args) {  
//建立pdfDocument對象,並加載PDF文檔  
PdfDocument doc = new PdfDocument();  
doc.loadFromFile("C:\\Users\\Test1\\Desktop\\sample.pdf");  
//添加頁眉  
drawHeader(doc);  
//添加頁腳  
drawFooter(doc);  
//保存文檔  
doc.saveToFile("output/添加頁眉頁腳.pdf");  
    }  
  
public static void drawHeader(PdfDocument doc) {  
//獲取頁面尺寸  
Dimension2D pageSize = doc.getPages().get(0).getSize();  
//定義兩個float變量  
float x = 90;  
float y = 20;  
for (int i = 0; i < doc.getPages().getCount(); i++)  {  
//添加圖片到指定位置  
PdfImage headerImage = PdfImage.fromFile("C:\\Users\\Test\\Desktop\\logo.png");  
float width = headerImage.getWidth()/2;  
float height = headerImage.getHeight()/2;  
doc.getPages().get(i).getCanvas().drawImage(headerImage, x,  y, width, height);  
//添加橫線至圖片下  
PdfPen pen = new PdfPen(PdfBrushes.getGray(), 0.5f);  
doc.getPages().get(i).getCanvas().drawLine(pen, x, y + height + 1,  pageSize.getWidth() - x, y + height + 1);  
        }  
    }  
public  static void drawFooter(PdfDocument doc){  
//獲取頁面大小  
Dimension2D pageSize = doc.getPages().get(0).getSize();  
//定義兩個float變量  
float x = 90;  
float y = (float) pageSize.getHeight()- 72;  
for (int i = 0; i < doc.getPages().getCount(); i++)  {  
//添加橫線到指定位置  
PdfPen pen = new PdfPen(PdfBrushes.getGray(), 0.5f);  
doc.getPages().get(i).getCanvas().drawLine(pen, x, y, pageSize.getWidth() - x, y);  
//添加文本到指定位置  
y = y + 8;  
PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,8),true);  
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);  
String footerText = "姓名:Lily\n聯繫電話:0101112222\n網站:www.Lilyhome.com";  
doc.getPages().get(i).getCanvas().drawString(footerText, font, PdfBrushes.getBlack(), x, y, format);  
//添加頁碼  
PdfPageNumberField number = new PdfPageNumberField();  
PdfPageCountField count = new PdfPageCountField();  
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.getBlack(), "第{0}頁 共{1}頁", number, count);  
compositeField.setStringFormat(new PdfStringFormat(PdfTextAlignment.Right, PdfVerticalAlignment.Top));  
Dimension2D fontSize = font.measureString(compositeField.getText());  
compositeField.setBounds(new Rectangle2D.Float((float) (pageSize.getWidth() - x - fontSize.getWidth()), y, (float)fontSize.getWidth(), (float)fontSize.getHeight()));  
compositeField.draw(doc.getPages().get(i).getCanvas());  
        }  
    }  
}

頁眉頁腳添加效果:

效果1.png

(本文完)工具

相關文章
相關標籤/搜索