有些PDF文档没有页码,用户在阅读的时候很不方便。这篇文章将介绍如何使用免费PDF Java组件 - Free Spire.PDF for Java给现有PDF文档添加页码。
导入jar包
首先,下载Free Spire.PDF for Java组件包,并解压缩,从lib文件夹下引用以下两个.jar文件到Java应用程序中:
- Spire.Pdf.jar
- Spire.Common.jar
原文档如下:
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());
}
}
}
运行代码,打开生成文档,结果如下: