需要使用的依赖

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version>
</dependency>

工具类

源文件全路径和输出全路径最好不要写同一样的,不然有可能会报“java.io.FileNotFoundException:请求的操作无法在使用用户映射区域打开的文件上执行”的错误

package com.oims.util;import com.itextpdf.text.BaseColor;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*** 给pdf文件加水印*/
public class Util{/*** 给pdf文件加水印* @param inputFile 源文件路径* @param outputFile 输出文件路径* @param waterMarkName 水印内容* @return*/public static boolean waterMark(String inputFile,String outputFile, String waterMarkName) {try {PdfReader reader = new PdfReader(inputFile);PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));//这里的字体设置比较关键,这个设置是支持中文的写法BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体int total = reader.getNumberOfPages() + 1;PdfContentByte under;Rectangle pageRect = null;for (int i = 1; i < total; i++) {pageRect = stamper.getReader().getPageSizeWithRotation(i);// 计算水印X,Y坐标float x = 290;//pageRect.getWidth() / 2;float y = 400;//pageRect.getHeight() / 2;// 获得PDF最顶层under = stamper.getOverContent(i);//在内容上方加水印//under = stamper.getUnderContent(i);// 在内容下方加水印under.saveState();// set TransparencyPdfGState gs = new PdfGState();// 设置透明度范围为0到1gs.setFillOpacity(0.3f);under.setGState(gs);under.beginText();under.setFontAndSize(base, 35);//字体大小under.setColorFill(BaseColor.BLACK);//字体颜色// 水印文字成45度角倾斜under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, x, y, 45);// 添加水印文字under.endText();under.setLineWidth(1f);under.stroke();}stamper.close();reader.close();return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 方法调试*/public static void main(String[] args) throws Exception {waterMark("D:\data\hello.pdf","D:\data\newHello.pdf","水印内容")}}

java通过itextpdf实现pdf文件加水印相关推荐

  1. 咖啡汪日志——JAVA导出pdf文件加水印 文字+图片、文字

    咖啡汪日志--JAVA导出pdf文件加水印 文字和图片.文字 hello,又大家见面了! 作为一只不是在戏精就是在戏精路上的哈士奇,今天要展示给大家的就是如何快捷地给pdf文件增加各种水印.嗷呜呜,前 ...

  2. java用itextPDF生成PDF文件保存至本地并上传至ftp服务器

    标题java用itextPDF生成PDF文件保存至本地并上传至ftp服务器 所需jar :itext-asian-5.2.0.jar,itextpdf-5.5.5.jar,commons-net-3. ...

  3. pdf文件加水印怎么加,5个方法快速易学

    PDF文件加水印是一个非常重要且常见的操作,对于不熟悉这一技能的人来说可能会感到困难.这也是为什么在某些浏览器中"pdf文件加水印怎么加"搜索量可高达几百万之多.但是,我们都知道掌 ...

  4. vue 中利用canvas 给pdf文件加水印---详细教程(附上完整代码)

    需求:在h5网页中打开pdf文件,要求给文件添加水印 实现技术及插件:vue,vue-pdf,canvas 插件安装: npm i vue-pdf --save npm i pdf-lib --sav ...

  5. Java使用itextpdf生成PDF文件,用浏览器下载

    浏览器下载生成PDF文件 1.引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId> ...

  6. 如何使用python给PDF文件加水印

    Python作为编程界最火的语言,能做的事几乎你能想到的它都能干,就连抢茅台都可以,还有什么不行?! Python作为脚本编程语言,可以做很多事情.使用Python,你可以轻松地给pdf加上水印. 你 ...

  7. iText包对每页pdf文件加水印

    https://ishare.iask.sina.com.cn/f/31zwqlKmIwM.html

  8. PDF.js对打印、下载按钮做限制,pdf文件加水印

  9. 还在研究pdf怎么加水印?你用python的同事早已下班了

    还在研究pdf怎么加水印?你用python的同事早已下班了 利用Python能够在office办公时干很多事情,特别是要处理一些简单而重复的工作,这个时候选择python来帮你解决一定是再适合不过了. ...

  10. pdf怎么加水印?3个方法可完成

    pdf怎么加水印?在平时的工作中,在现今数字化时代,PDF文件是一种非常流行的电子文档格式,因为它可以保留文档的原始样式.字体和布局.我们经常需要使用或者编写一些包含重要信息的PDF文件,并且还会将这 ...

最新文章

  1. 30 张图解 | 高频面试知识点总结:面试官问我高并发服务模型哪家强?
  2. SQLServer之创建非聚集索引
  3. python列表字典如何提取_怎么提取字典里面的列表里面的字典的value
  4. eclipse maven插件创建java web项目(2)
  5. # 和 ## 的区别
  6. Pytorch —— GPU的使用
  7. LINUX awk操作
  8. 2020胡润全球80后白手起家富豪榜:前三名两位中国人
  9. Windows系统判断是否为64位系统(C++)
  10. 动态规划解决分割问题
  11. nodejs如何实现ajax,nodejs + express怎么实现Ajax方式及其简单功能
  12. CO_P0(logisim)
  13. 学习DSP28335--CCS软件打开例程时一直报错问题以及编译问题解决
  14. mysql按笔划排序_Sql Server数据库汉字按字母、笔划、拼音首字母、排序
  15. 审计机构不用计算机审计,计算机审计存在哪些风险
  16. Android中的占位符
  17. 苹果待处理订单要多久_一个订单管理系统帮你轻松应对复杂的生产订单管理
  18. 如何查找你的IP地址?通过IP地址能直接定位到你家!
  19. C语言 switch多分支语句实现根据等级划分分数段
  20. python从键盘输入一个字符串、将小写字母全部_从键盘输入一个字符串_将其中的小写字母全部转换成大写字母...

热门文章

  1. Entry name ‘classes.dex‘ collided
  2. rabbitmq 从channal获得socket
  3. 构建 Web 应用之 Service Worker 初探
  4. ios开发——实用技术篇Block/KVO/通知/代理
  5. IPSec之IKEv2详解
  6. JavaScript 每日一题 #7
  7. Python | 基础学习(二)函数基础、非数字型变量(列表、元组、字典、字符串)、切片、for循环
  8. 编程序,用getchar函数读人两个字符给c1和c2,然后分别用
  9. Unity输入控制物体旋转和延迟缩放-课程作业
  10. 三国志战略版360区S4服务器合并信息,三国志战略版赛季区别 三国志战略版S4赛季与各赛季之间的区别_游侠手游...