Java 如何给现有PDF文档添加页码

时间:2024-03-28 10:34:32

有些PDF文档没有页码,用户在阅读的时候很不方便。这篇文章将介绍如何使用免费PDF Java组件 - Free Spire.PDF for Java给现有PDF文档添加页码。

导入jar包

首先,下载Free Spire.PDF for Java组件包,并解压缩,从lib文件夹下引用以下两个.jar文件到Java应用程序中:

  • Spire.Pdf.jar
  • Spire.Common.jar

原文档如下:

Java 如何给现有PDF文档添加页码

AddPageNumber.java代码

import com.spire.pdf.PdfDocument;
import com.spire.pdf.automaticfields.PdfPageNumberField;
import com.spire.pdf.graphics.*;

import java.awt.*;

public class AddPageNumber {
    public static void main(String[] args)
    {
        //加载PDF
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("Input.pdf");

        //设置页边距
        PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
        PdfMargins margin = new PdfMargins();
        margin.setTop(unitCvtr.convertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
        margin.setBottom(unitCvtr.convertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
        margin.setLeft(unitCvtr.convertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));
        margin.setRight(unitCvtr.convertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point));

        //调用AddPageNumber方法添加页码
        AddPageNumber(pdf, margin);

        //保存文档
        pdf.saveToFile("AddPageNumber.pdf");
    }

    /**
     *
     * @param document
     * PDF文档
     * @param margin
     * PDF文档页面的边距
     */
    public static void AddPageNumber(PdfDocument document, PdfMargins margin)
    {
        int pageCount = document.getPages().getCount();
        for(int i = 0; i < pageCount; i++)
        {
            PdfBrush brush = PdfBrushes.getBlack();
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS",Font.PLAIN,14),true);
            PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);
            int x = (int)document.getPages().get(i).getCanvas().getClientSize().getWidth() / 2;
            int y = (int)(document.getPages().get(i).getCanvas().getClientSize().getHeight() - margin.getBottom());
            Rectangle bounds = new Rectangle(x,y, 50, 20);
            PdfPageNumberField field = new PdfPageNumberField();
            field.setFont(font);;
            field.setBrush(brush);
            field.setStringFormat(format);
            field.setBounds(bounds);
            field.draw(document.getPages().get(i).getCanvas());
        }
    }
}

运行代码,打开生成文档,结果如下:

Java 如何给现有PDF文档添加页码