Java 给PDF文档添加页码

2020-05-29 16:02:22来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

日常工作中,为了方便阅读、检索与PDF文档,我们常常需要对其进行页码添加 那么接下来就分享一个使用免费的Free Spire.PDF for JavaJava程序中快速为PDF文档添加页码的方法。

 

首先放一张效果图供大家参考:

 

 

基本步骤

  1. 下载Free Spire.PDF for Java包并解压缩
  2. lib文件夹下Spire.Pdf.jar包作为依赖项导入Java应用程序中或者通过Maven仓库安装JAR包(配置pom.xml文件的代码见下文
  3. Java应用程序中新建一个Java Class(此处我命名为AddPageNumbers), 然后输入相应的Java代码并运行

 

配置pom.xml文件

 

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>2.6.3</version>
    </dependency>
</dependencies>

 

Java代码

 

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 < pdf.getPages().getCount(); 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");
    }

 


原文链接:https://www.cnblogs.com/jazz-z/p/12985679.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java必备主流技术流程图,写得非常好!

下一篇:看完这篇还不懂Redis的RDB持久化,你们来打我!