阅读具有大量页面的 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>11.10.3</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 天的临时许可证。
 



 
					



