阅读具有大量页面的 PDF 文件时,页码可以让我们更快地找到某个页面。此外,页码还有助于确定打印时页面输出的顺序是否正确。本文将介绍如何使用 Spire.PDF for Java 以编程的方式为现有的 PDF 文档添加页码。
安装 Spire.PDF for Java
首先,您需要在 Java 程序中添加 Spire.Pdf.jar 文件作为依赖项。您可以从此链接下载 JAR 文件;如果您使用 Maven,则可以在 pom.xml 文件中添加如下代码导入 JAR 文件:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>10.11.2</version>
</dependency>
</dependencies>
向已有 PDF 文档添加页码
Spire.PDF for Java 中的动态字段: PdfPageNumberField、PdfPageCountField、PdfCompositeField 可用于向 PDF 文档添加页码。
顾名思义,PdfPageNumberField 用于显示页码,PdfPageCountField 用于显示总页数,PdfCompositeField 用于将两个或多个动态字段(如 PdfPageNumberField 和 PdfPageCountField)组合成一个字段。
如果只想添加“第1页、第2页、第3页…“这样页码的于 PDF 文档,可以只使用 PdfPageNumberField。如果希望在文档中添加“第X页(共Y页)”这样的页码,则需要使用 PdfPageNumberField、PdfPageCountField 和 PdfCompositeField。
以下步骤展示了如何将“第 X 页(共 Y 页)”这样的页码添加到现有的 PDF 文档中:
- 创建 PdfDocument 类的对象。
- 使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
- 创建 PdfPageNumberField 类的对象。
- 创建 PdfPageCountField 类的对象。
- 创建 PdfCompositeField 类的对象。
- 使用 PdfCompositeField.setStringFormat() 方法为复合字段设置文本对齐方式。
- 循环遍历 PDF 文档中的每一页,然后使用 PdfCompositeField.draw() 方法在页面的特定位置绘制复合字段。
- 使用 PdfDocument.saveToFile() 方法保存结果文档。
- Java
import com.spire.pdf.*;
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.*;
public class addPageNumber {
public static void main(String[] args) {
//创建 PdfDocument 类的对象
PdfDocument pdf = new PdfDocument();
//载入PDF文档
pdf.loadFromFile("C:/示例.pdf");
//创建 PdfTrueTypeFont 类的对象
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("华文中宋", Font.PLAIN, 10));
//创建 PdfPageNumberField 类的对象
PdfPageNumberField pageNumberField = new PdfPageNumberField(font, PdfBrushes.getBlack());
//创建 PdfPageCountField 类的对象
PdfPageCountField pageCountField = new PdfPageCountField(font, PdfBrushes.getBlack());
//创建一个 PdfCompositeField 类的对象,将页码字段和页数字段添加到复合字段
PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.getBlack(), "第{0}页/共{1}页", pageNumberField, pageCountField);
//设置复合字段的文字格式
compositeField.setStringFormat(new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top));
//循环遍历文档中的页面
for(int i = 0; i < pdf.getPages().getCount();i ++)
{
PdfPageBase page = pdf.getPages().get(i);
float x = (float) page.getSize().getWidth()/2 - 20;
float y = (float)page.getSize().getHeight() - pdf.getPageSettings().getMargins().getBottom();
//将复合字段描绘于每个页面上
compositeField.draw(page.getCanvas(), x, y);
}
//保存结果文档
pdf.saveToFile("添加页码.pdf");
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。