ITPub博客

首页 > 应用开发 > Java > Java 给PDF文档添加页码

Java 给PDF文档添加页码

原创 Java 作者:Jazzz 时间:2020-05-29 09:53:19 0 删除 编辑

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

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


基本步骤:

  1. 下载 F ree Spire.PDF for Java 包并解压缩

  2. 将 lib文件夹下 的 Spire.Pdf.jar包 作为依赖项导入 到Java应用程序中 , 或者通过 M aven仓库安装 J AR包( 配置 pom.xml文件 的代码见下文 )

  3. 在J ava 应用程序中新建一个Java C lass(此处我命名为AddPageNumbers) , 然后输入相应的J ava 代码并运行


配置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>



J ava 代码

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");
    }


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69968349/viewspace-2694959/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-03-25

  • 博文量
    26
  • 访问量
    23375