实现思路:将原pdf复制一份到目标pdf,在目标pdf上进行操作,复制的原因是:原pdf需要获取其pdf读入流(PdfReader),如果还在原pdf上继续宁操作,就会出现一下一下异常

java.io.FileNotFoundException: D:\testtest1\test.pdf (请求的操作无法在使用用户映射区域打开的文件上执行。)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputStream.open(FileOutputStream.java:270)at java.io.FileOutputStream.<init>(FileOutputStream.java:213)at java.io.FileOutputStream.<init>(FileOutputStream.java:101)at priv.lgq.filesysspringboot.utils.pdf.PdfUtils.addPageNum(PdfUtils.java:146)at priv.lgq.filesysspringboot.business.DemoTest.main(DemoTest.java:28)

源码如下:

 1     /** 2      * 添加页码3      *4      * @author 龙谷情5      * @date 2020/11/12 14:256      * @param pdfPath 原pdf路径7      * @param outFilePath 目标pdf路径8      * @param positionX 页数位置X9      * @param positionY 页数位置Y
10      * @param fontSize 字体大小
11      * @return java.io.File[返回类型说明]
12      * @exception/throws [异常类型] [异常说明]
13      * @since [v1.0]
14      */
15     public static File addPageNum(String pdfPath, String outFilePath, int positionX, int positionY, int fontSize) {
16         PdfReader reader = null;
17         PdfStamper stamper = null;
18         FileOutputStream outputStream = null;
19         try {
20             // 创建一个pdf读入流
21             reader = new PdfReader(pdfPath);
22             // 根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
23             outputStream = new FileOutputStream(outFilePath);
24             stamper = new PdfStamper(reader, outputStream);
25             // 这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
26             BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
27             // baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
28             Font font = new Font(bf, 10);
29             font.setStyle(Font.BOLD);
30             font.getBaseFont();
31             // 获取页码
32             int num = reader.getNumberOfPages();
33             for (int i = 1; i <= num; i++) {
34                 PdfContentByte over = stamper.getOverContent(i);
35                 over.beginText();
36                 over.setFontAndSize(font.getBaseFont(), fontSize);
37                 over.setColorFill(BaseColor.BLACK);
38                 // 设置页码在页面中的坐标
39                 over.setTextMatrix(positionX, positionY);
40                 over.showText("第" + i + "页");
41                 over.endText();
42                 over.stroke();
43             }
44             stamper.close();
45         } catch (Exception e) {
46             e.printStackTrace();
47         } finally {
48             if (outputStream != null) {
49                 try {
50                     outputStream.close();
51                 } catch (IOException e) {
52                     e.printStackTrace();
53                 }
54             }
55             if (reader != null) {
56                 reader.close();
57             }
58             if (stamper != null) {
59                 try {
60                     stamper.close();
61                 } catch (DocumentException e) {
62                     e.printStackTrace();
63                 } catch (IOException e) {
64                     e.printStackTrace();
65                 }
66             }
67         }
68         File file = new File(outFilePath);
69         return file;
70     }

pdf工具类之添加页码相关推荐

  1. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  2. Java中导出pdf文件,pdf工具类demo

    最近在做导出pdf文件的功能,参考了很多资料和demo,完成了转出pdf的功能,并适合项目的pdf工具类,现贴出具体的工具类和demo,如有不对的地方欢迎指正 1.pdf工具类PdfUtil.java ...

  3. 利用若依@Excel注解导出PDF工具类

    利用若依@Excel注解导出PDF工具类 1.pom依赖 <!--PDF导出--><dependency><groupId>com.itextpdf</gro ...

  4. springboot在工具类中添加service的方法,显示为空的解决方案

    springboot在工具类中添加service的方法,显示为空的解决方案 参考文章: (1)springboot在工具类中添加service的方法,显示为空的解决方案 (2)https://www. ...

  5. JAVA--word等文件转PDF工具类

    word转pdf工具类 关键代码片段 public static void main(String[] args) {         String docPath = "D:\\测试文件. ...

  6. Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

    Java使用ftl模板文件生成Word 一.写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊. https://blog.cs ...

  7. PDF编辑技巧之添加页码和编辑文字

    我们从小学接触到现在的Word文档具有任意编辑性,但是PDF文档就不同了,PDF不易编辑,我们虽然可以通过把PDF文档转换成Word后再进行编辑,但这种方式太过麻烦,而且有些PDF文档转换后会出现格式 ...

  8. Word或Excel 转Pdf 工具类(License 去水印)

    Word或Excel 转Pdf 帮助类 需要引入jar包: aspose-words-15.8.0-jdk16.jar aspose-cells-8.5.2.jar 工具类 import com.as ...

  9. java生成pdf工具类,聪明人已经收藏了!

    5节创建者模式 第1节:工厂方法模式 第2节:抽象工厂模式 第3节:建造者模式 第4节:原型模式 第5节:单例模式 7节结构型模式 第1节:适配器模式 第2节:桥接模式 第3节:组合模式 第4节:装饰 ...

最新文章

  1. python是如何实现进程池和线程池的_高并发:线程、线程锁与线程池(精华),手写代码实现线程池...
  2. 台式计算机m9870t,JBT9870_水力测功器最新标准规范(14页)-原创力文档
  3. dependencies与devDependencies的区别
  4. Notes on language modeling-COMS W4705: Natural Language Processing-学习笔记
  5. liunx宝塔配置https_宝塔面板安装教程
  6. python基础作业第五天
  7. C语言const:禁止修改变量的值
  8. java sts安装步骤_java开发工具STS的下载及安装
  9. python爬网页html乱码问题
  10. 关于ip报文校验和一些思考
  11. android sd卡 spi,SD卡总结-SPI模式
  12. 老司机 iOS 周报 #15 | 2018-04-16
  13. 巴西龟饲养日志----巴西龟成长标志
  14. 【亲测有效!!!】解决git did not exit cleanly (exit code 1) 错误
  15. 成功入职字节跳动,分享我的八面面经心得!
  16. 做玫瑰花的方法 用纸_用纸折玫瑰花的方法简单又快速
  17. Mysql cancel分析
  18. 北大计算机科学与技术教材,北京大学计算机科学与技术参考书目
  19. 数据库SQL语句 快速入门(一)
  20. C#之Image使用

热门文章

  1. 百度小程序第三方平台开发,一整套流程
  2. html基础之好看的header
  3. 名帖337 张旭 草书《古诗四帖》
  4. 03_深度学习实现手写数字识别(python)
  5. python学习--统计序列中元素出现的频度(次数)
  6. 曾被疑为有血缘关系的明星
  7. 2021年十佳优惠券返利APP排名榜 2021年用户喜欢的优惠券返利APP前10排行榜
  8. (Java实现) 细胞
  9. 设置linux服务器同步时间
  10. java实现word文档转pdf,并添加水印