在
日常工作中,为了方便
阅读
、检索与
管
理
文档,
我们
常常需要对其
进行页码
的
添加
。
那么接下来就分享一个使用免费的
F
ree Spire.PDF for Java
在J
ava
程序中快速为
文档添加页码
的方法。
首先放一张效果图供大家参考:
基本步骤:
将
lib文件夹下
的
Spire.Pdf.jar包
作为依赖项导入
到Java应用程序中
,
或者通过
M
aven仓库安装
J
AR包(
配置
pom.xml文件
的代码见下文
)
在J
ava
应用程序中新建一个Java
C
lass(此处我命名为AddPageNumbers)
,
然后输入相应的J
ava
代码并运行
配置pom.xml
文件
:
com.e-iceblue
http://repo.e-iceblue.cn/repository/maven-public/
e-iceblue
spire.pdf.free
2.6.3
J
ava
代码
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 AddPageNumbers {
public static void main(String[] args) {
//加载PDF文档
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("sample.pdf");
//创建字体
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 10),true);
//获取页面尺寸
Dimension2D pageSize = pdf.getPages().get(0).getSize();
//初始化y坐标
float y = (float) pageSize.getHeight() - 40;
//遍历文档中的页
for (int i = 0; i
//初始化页码域
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 textSize = font.measureString(compositeField.getText());
//设置复合域的在PDF页面上的位置及大小
compositeField.setBounds(new Rectangle2D.Float(((float) pageSize.getWidth() - (float) textSize.getWidth())/2, y, (float) textSize.getWidth(), (float) textSize.getHeight()));
//将复合域添加到PDF页面
compositeField.draw(pdf.getPages().get(i).getCanvas());
}
//保存为另外一个文档
pdf.saveToFile("AddPageNumbers.pdf");
}