最近在开发一个项目,其中就有导出的功能,而甲方提了一个需求,要对导出的pdf加文字水印,所以我就加班了整整10分钟肝出了这个功能,既然做出来了就和大家分享一下吧,拿走不谢!!!

总共就三步,非常简单

1.导入maven依赖

        <!-- PDF文件依赖包 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version></dependency><!-- PDF文件字体 防止中文乱码 --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

2.PDF增加水印工具类

import com.itextpdf.text.Element;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;import javax.swing.*;
import java.awt.*;
import java.io.FileOutputStream;/*** @Author: FuGui Wang* @Description: PDF增加水印工具类* @Date 2022/12/14* @Version V1.1.0*/
public class PDFAddWatermarkUtil {/*** 给PDF添加水印* @param inputFile 原文件路径+名称* @param outputFile 添加水印后输出文件保存的路径+名称* @param waterMarkName 添加水印的内容*/public static void PDFAddWatermark(String inputFile,String outputFile, String waterMarkName) {try {// 水印的高和宽(参数可调节)int textH = 75;int textW = 170;// 间隔距离(参数可调节)int interval = 30;// 切记这里的参数是文件的路径 ,路径必须是双斜杠的如F:\\test.pdf,不能是F:/test.pdf 或者F:\test.pdfPdfReader reader = new PdfReader(inputFile);PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);PdfGState gs = new PdfGState();gs.setFillOpacity(0.2f);//改透明度gs.setStrokeOpacity(0.4f);int total = reader.getNumberOfPages() + 1;JLabel label = new JLabel();label.setText(waterMarkName);PdfContentByte under;// 可添加多个水印Rectangle pageRect = null;FontMetrics metrics;label.setText(waterMarkName);metrics = label.getFontMetrics(label.getFont());for (int i = 1; i < total; i++) {pageRect = reader.getPageSizeWithRotation(i);// 在内容上方加水印under = stamper.getOverContent(i);// 在内容下方加水印//under = stamper.getUnderContent(i);under.saveState();under.setGState(gs);under.beginText();under.setFontAndSize(base, 20);// 水印文字成30度角倾斜for (int height = interval + textH; height < pageRect.getHeight();height = height + textH * 3) {for (int width = interval + textW; width < pageRect.getWidth() + textW;width = width + textW * 2) {under.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW,height - textH, 30);}}// 添加水印文字under.endText();}stamper.close();reader.close();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {try {PDFAddWatermark("D:\\upload\\Java八股文之基础篇.pdf", "D:\\upload\\Java八股文之基础篇-水印.pdf","这是水印");} catch (Exception e) {e.printStackTrace();}}
}

3.运行工具类下面的main方法,执行结束后会在同级目录生成一个新的pdf文件

效果展示

没加水印的pdf

加了水印的pdf

 水印的间隔和透明度都是可以通过参数控制的,快去试试吧!

爱吃巧乐兹~的博客_CSDN博客-Linux,Java,爬虫领域博主爱吃巧乐兹~擅长Linux,Java,爬虫,等方面的知识,爱吃巧乐兹~关注spring,jvm,spring boot,java,spring cloud,mybatis领域.https://blog.csdn.net/m0_57625723?type=lately

java pdf添加文字水印(非常专业)相关推荐

  1. java springboot使用itext 为PDF添加文字水印并铺满屏

    java springboot使用itextpdf 为PDF添加文字水印并铺满屏 代码如下 如果对你有帮助希望你能点个赞 结尾 这是我第一次发博客,也是第一次使用itext添加水印.遇到一些大大小小的 ...

  2. java -PDF添加文本水印与图片水印

    java pdf添加水印文本及图片文本 PDF文件添加文本水印: private static int interval = 30;public static voidwaterMark(String ...

  3. Java实现添加文字水印、图片水印功能

    Java实现添加水印功能 添加水印 Java 2D API介绍 绘制文字水印 绘制图片水印 循环添加文字水印 添加水印 为图片添加水印的主要作用是保护图片版权,防止图片被未经授权的人使用或传播.为图片 ...

  4. 使用itext5给PDF添加文字水印

    1.首先在pom文件添加依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextp ...

  5. java实现word和pdf添加文字水印

    相关jar包 链接:https://pan.baidu.com/s/1VkcCsKIqSHlg5vwIOHoHeg 提取码:ju96 实现代码 import com.itextpdf.text.Bas ...

  6. java pdf添加透明水印_如何在PDF文件中添加透明水印

    原标题:如何在PDF文件中添加透明水印 有些文件添加水印,但是又不想水印影响文件的使用有时候会设置透明水印,那么PDF怎么设置透明水印呢,应该有很多的小伙伴们都很好奇应该怎么做吧,接下来就为大家分享一 ...

  7. java pdf添加图片水印图片_Java 在PDF中添加文本水印、图片水印(基于Spire.Cloud.SDK for Java)...

    Spire.Cloud.SDK for Java提供了接口pdfWartermarkApi可用于添加文本水印addTextWartermark()和图片水印addImageWartermark()到P ...

  8. java pdf添加透明水印_如何使用PDF编辑工具在PDF文件中添加透明水印

    PDF 文件在修改编辑的时候会使用到 PDF 编辑工具,不管是工 作中还是生活中,都会使用到 PDF 文件,当我们需要给 PDF 文件添 加透明水印时,该怎么操作呢,是不是有很多的小伙伴也很好奇, 那 ...

  9. .NET iTextSharp PDF添加文字水印

    /// <summary>/// 设置Pdf水印/// </summary>/// <param name="filePath">pdf所在的文 ...

最新文章

  1. 稀疏多项式的运算用链表_用漫画告诉你—什么是HashMap?
  2. SpringCloud版本名字
  3. 简洁强大的JavaWeb框架Blade
  4. “我不看春晚,但想要张小斐同款”
  5. 灵玖软件:九眼智能文档核查云平台上线了
  6. MFC之添加PNG,JPG图片
  7. 充电枪cp信号控制板_比亚迪E5无法交流充电故障检修
  8. CodeProject.com上微软BizTalk平台技术文章集锦
  9. 基于Python的微信公众号爬虫
  10. DM8达梦数据库:sql查询达梦数据库实例的详情
  11. 大连理工大学电路计算机,大连理工大学电路计算机辅助分析实验报告精要.pdf...
  12. 数据库Mysql:存储过程(PROCEDURE )函数(FUNCTION)
  13. 仿秒拍图床最新版_图床程序源码下载
  14. Failed to push the item(s)解决方法
  15. 学习笔记(1):PR快速入门-认识界面
  16. opengles绘制天空盒
  17. 农夫山泉:HANA应用在企业中层层展现
  18. Web开发day5:项目
  19. 关于把文章分享到facebook,google,twtter,whatsapp的总结
  20. 河南省企业登记全程电子化平台无法访问怎么解决?

热门文章

  1. 阿里java开发一面 面试题及个人解析答案
  2. TC358775XBG是一颗将MIPI DSI信号转换成single/ dual -link LVDS的芯片,最高分辨率支持到1920x1200
  3. linux下IIC驱动开发分析
  4. Vue CLI 预设Presets
  5. WOW.js插件使用
  6. 开发实况4.1.linux相关-CRT连接虚拟机提示用户名或密码错误
  7. 人工智能第八章答案神经网络,神经网络简答题
  8. 部分大数据平台运维题及答案
  9. [zz] 音频DAC的原理
  10. html java实训心得,学习中关于HTML的总结与一些心得