如何通过Java代码将添加页码到PDF文档? 当前聚焦

2023-04-06 16:43:07 来源:博客园


(相关资料图)

页码可以清楚了解总页数、定位页数快速寻找自己所要的文段、打印时不会分不清头中尾。很多人在使用办公软件的时候就会选择PDF进行文档的保存,因为PDF在保存之后不会出现乱码甚至是格式改变的情况。在PDF中添加页码成功后每张PDF页面的最下面会显示页码,这样可以更加详细清晰的明白文档的相关性和内容的具体位置。并且方便了我们后续工作的展开,大大提高了职场中的工作效率。今天这篇文章就将介绍如何通过Java代码,以编程的方式将添加页码到PDF文档。详情请阅读以下内容。

代码编译环境:

IntelliJ IDEA 2019(jdk 1.8.0)

PDF Jar包:Free Spire.PDF for Java 5.1.0

引入jar

导入方法1:

手动引入。将Free Spire.PDF for Java下载到本地,解压,找到lib文件夹下的Spire.PDF.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

导入方法2:如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

                    com.e-iceblue            https://repo.e-iceblue.cn/repository/maven-public/                        e-iceblue        spire.pdf.free        5.1.0    
将添加页码到PDF文档

以下步骤展示了如何将“第 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("九寨沟简介 .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");    }}
效果图

—本文完—

标签

大米等库存充足!宁波生活必需品市场供应总体平稳有序

宁波市商务局9月14日晚间发布的重点生活必需品市场供应情况保障工作日报显示,我市大米、蔬菜、副食、粮...

2022-09-15 17:27:29

全国新能源汽车下乡活动在昆山启动 将发放500万元“红包”

6月17日,由中国汽车工业协会、省工信厅、省农业农村厅、省商务厅、省发改委、苏州市政府、新华日报社、...

2022-06-20 16:48:35

安阳本土确诊病例上升至26例

  中新网安阳1月10日电 (杨大勇)10日,河南省安阳市召开新冠肺炎疫情防控工作第二场新闻发布会通报称...

2022-01-10 15:22:56

3次推迟婚期 满洲里抗疫民警兑现承诺:“我回来娶你了!”

  (抗击新冠肺炎)3次推迟婚期 满洲里抗疫民警兑现承诺:“我回来娶你了!”  中新网呼伦贝尔1月10...

2022-01-10 15:22:56

上海公安民警在岗位上迎接2022年“中国人民警察节”

  中新网上海1月10日电(记者 李姝徵)“我志愿成为中华人民共和国人民警察,献身于崇高的人民公安事业...

2022-01-10 15:22:55

郑州核酸检测为中小学生开辟“绿色通道”

  (抗击新冠肺炎)郑州核酸检测为中小学生开辟“绿色通道”  中新网郑州1月10日电(杨大勇)“学生不用...

2022-01-10 15:22:55

反扒便衣警察“小曹”:藏在人海中的隐形“守护者”

  小曹说,他现在理解了师父当年如何历练出一副“火眼”,碰见的贼多了,案子经手的多了,自然就有了...

2022-01-10 15:22:54

哥哥移植肾脏给病重弟弟 已在上海顺利康复

  中新社上海1月10日电 (陈静 王根华)在上海武警服役的弟弟被尿毒症击倒,哥哥义无反顾地捐献出自...

2022-01-10 15:22:54

网友与人裸聊被敲诈10万余元 被告人获刑5年

  中新网长春1月10日电 (谭伟旗)当下,新型网络诈骗案件已较为普遍,由于网络上身份的不确定性、语言...

2022-01-10 15:22:53

1月10日起天津市暂停开展旅行社旅游业务活动

  中新网1月10日电 据天津市文旅局官网消息,天津市文化和旅游局10日发布紧急通知称,即日起,天津市...

2022-01-10 15:22:53
x 广告
x 广告

Copyright  2015-2022 人人粮油网版权所有  备案号:粤ICP备18023326号-36   联系邮箱:8557298@qq.com