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

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

页码可以清楚了解总页数、定位页数快速寻找自己所要的文段、打印时不会分不清头中尾。很多人在使用办公软件的时候就会选择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 文件。
  1. <repositories>
  2.         <repository>
  3.             <id>com.e-iceblue</id>
  4.             <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
  5.         </repository>
  6.     </repositories>
  7. <dependencies>
  8.     <dependency>
  9.         <groupId>e-iceblue</groupId>
  10.         <artifactId>spire.pdf.free</artifactId>
  11.         <version>5.1.0</version>
  12.     </dependency>
  13. </dependencies>
复制代码
将添加页码到PDF文档

以下步骤展示了如何将“第 X 页(共 Y 页)”这样的页码添加到现有的 PDF 文档中:


  • 创建 PdfDocument 类的对象。
  • 使用 PdfDocument.loadFromFile() 方法加载 PDF 文档。
  • 创建 PdfPageNumberField 类的对象。
  • 创建 PdfPageCountField 类的对象。
  • 创建 PdfCompositeField 类的对象。
  • 使用 PdfCompositeField.setStringFormat() 方法为复合字段设置文本对齐方式。
  • 循环遍历 PDF 文档中的每一页,然后使用 PdfCompositeField.draw() 方法在页面的特定位置绘制复合字段。
  • 使用 PdfDocument.saveToFile() 方法保存结果文档。
完整代码

Java
  1. import com.spire.pdf.*;
  2. import com.spire.pdf.automaticfields.PdfCompositeField;
  3. import com.spire.pdf.automaticfields.PdfPageCountField;
  4. import com.spire.pdf.automaticfields.PdfPageNumberField;
  5. import com.spire.pdf.graphics.*;
  6. import java.awt.*;
  7. public class addPageNumber {
  8.     public static void main(String[] args) {
  9.         //创建 PdfDocument 类的对象
  10.         PdfDocument pdf = new PdfDocument();
  11.         //载入PDF文档
  12.         pdf.loadFromFile("九寨沟简介 .pdf");
  13.         //创建 PdfTrueTypeFont 类的对象
  14.         PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("华文中宋", Font.PLAIN, 10));
  15.         //创建 PdfPageNumberField 类的对象
  16.         PdfPageNumberField pageNumberField = new PdfPageNumberField(font, PdfBrushes.getBlack());
  17.         //创建 PdfPageCountField 类的对象
  18.         PdfPageCountField pageCountField = new PdfPageCountField(font, PdfBrushes.getBlack());
  19.         //创建一个 PdfCompositeField 类的对象,将页码字段和页数字段添加到复合字段
  20.         PdfCompositeField compositeField = new PdfCompositeField(font, PdfBrushes.getBlack(), "第{0}页/共{1}页", pageNumberField, pageCountField);
  21.         //设置复合字段的文字格式
  22.         compositeField.setStringFormat(new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top));
  23.         //循环遍历文档中的页面
  24.         for(int i = 0; i < pdf.getPages().getCount();i ++)
  25.         {
  26.             PdfPageBase page = pdf.getPages().get(i);
  27.             float x = (float) page.getSize().getWidth()/2 - 20;
  28.             float y = (float)page.getSize().getHeight() - pdf.getPageSettings().getMargins().getBottom();
  29.             //将复合字段描绘于每个页面上
  30.             compositeField.draw(page.getCanvas(), x, y);
  31.         }
  32.         //保存结果文档
  33.         pdf.saveToFile("添加页码.pdf");
  34.     }
  35. }
复制代码
效果图


—本文完—
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表