iText实现pdf添加文字水印

1.添加maven依赖
      <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>
2.代码实现
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;/*** @description: pdf文档操作utils* @author: wzg* @create: 2021-12-16**/
public class PdfUtils {public static void main(String[] args) throws Exception {//需要添加水印的文件String inputFile = "D:\\data\\doc\\2021-12-15\\百强县分析报告1639532278835.pdf";//添加完水印的文件存放路径String outputFile = "D:\\data\\doc\\2021-12-15\\百强县分析报告1639532278835(水印).pdf";//需要添加的水印文字String waterMarkName = "添加水印";//水印字体透明度float opacity = 0.3f;//水印字体大小int fontsize = 40;//水印倾斜角度(0-360)int angle = 30;//数值越大每页竖向水印越少int heightDensity = 50;//数值越大每页横向水印越少int widthDensity = 10;PdfUtils.addWaterMark(inputFile, outputFile, waterMarkName, opacity, fontsize, angle, heightDensity, widthDensity,false);}/*** pdf添加水印* @param inputFile 需要添加水印的文件* @param outputFile 添加完水印的文件存放路径* @param waterMarkName 需要添加的水印文字* @param opacity 水印字体透明度* @param fontsize 水印字体大小* @param angle 水印倾斜角度(0-360)* @param heightDensity 数值越大每页竖向水印越少* @param widthDensity 数值越大每页横向水印越少* @param cover 是否覆盖* @return*/public static boolean addWaterMark(String inputFile, String outputFile, String waterMarkName,float opacity, int fontsize, int angle, int heightDensity, int widthDensity,boolean cover) {if (!cover){File file=new File(outputFile);if (file.exists()){return true;}}File file=new File(inputFile);if (!file.exists()){return false;}PdfReader reader = null;PdfStamper stamper = null;try {int interval = -5;reader = new PdfReader(inputFile);stamper = new PdfStamper(reader, new FileOutputStream(outputFile));BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);Rectangle pageRect = null;PdfGState gs = new PdfGState();//这里是透明度设置gs.setFillOpacity(opacity);//这里是条纹不透明度gs.setStrokeOpacity(0.2f);int total = reader.getNumberOfPages() + 1;System.out.println("Pdf页数:" + reader.getNumberOfPages());JLabel label = new JLabel();FontMetrics metrics;int textH = 0;int textW = 0;label.setText(waterMarkName);metrics = label.getFontMetrics(label.getFont());//字符串的高,   只和字体有关textH = metrics.getHeight();//字符串的宽textW = metrics.stringWidth(label.getText());PdfContentByte under;//循环PDF,每页添加水印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.setColorFill(BaseColor.PINK);  //添加文字颜色  不能动态改变 放弃使用under.setFontAndSize(base, fontsize); //这里是水印字体大小for (int height = textH; height < pageRect.getHeight() * 2; height = height + textH * heightDensity) {for (int width = textW; width < pageRect.getWidth() * 1.5 + textW; width = width + textW * widthDensity) {// rotation:倾斜角度under.showTextAligned(Element.ALIGN_LEFT, waterMarkName, width - textW, height - textH, angle);}}//添加水印文字under.endText();}System.out.println("添加水印成功!");return true;} catch (IOException e) {System.out.println("添加水印失败!错误信息为: " + e);e.printStackTrace();return false;} catch (DocumentException e) {System.out.println("添加水印失败!错误信息为: " + e);e.printStackTrace();return false;} finally {//关闭流if (stamper != null) {try {stamper.close();} catch (DocumentException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}if (reader != null) {reader.close();}}}
}

iText实现pdf添加文字水印相关推荐

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

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

  2. java pdf添加文字水印(非常专业)

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

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

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

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

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

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

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

  6. java实现给PDF文件添加图片水印,java实现给PDF文件添加文字水印

    接上一篇,pdf跟tif 是一起做的 java实现 1.给PDF文件添加图片水印: public static void waterMark1(String inputFile,String outp ...

  7. 如何批量给pdf文件添加文字水印?

    工作中我们会给重要的办公文件文件水印,给文件加上公司的名称等,这样可以有效防止文件内容被别人盗用抄袭,其中就包括word.Excel.PPT.图片.PDF等文件.PDF文件由于其特殊性,越来越成为最常 ...

  8. PDF怎么添加文字水印

    有时候自己辛辛苦苦做的文件被别人直接拿去使用就会有点不舒服,如果我们把文件中添加上水印呢?今天就以PDF文件为例子来教大家如果给PDF文件添加水印,一起来看看吧!  方法一.迅捷PDF编辑器https ...

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

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

  10. JAVA 给图片添加文字水印

    水印操作有很多,例如:给图片添加文字.图片水印,给pdf文件添加水印,给文件加盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印 ...

最新文章

  1. ORA-**,oracle 12c操作问题
  2. 从「王师傅一共损失了多少钱」说开去
  3. 测试使用skywalking_SkyWalking 搭建及简单使用、入门(Linux)
  4. JavaScript精要
  5. 不知道被谁删了微信好友?用 Python 来帮忙呀
  6. 云原生系列「五」我为啥又看上了serviceMesh?
  7. Python基础day01【软件安装、变量的定义和使用、数据类型、标识符和关键字、输入输出、数据类型转换、运算符、PEP 8 规范】
  8. REST 101开发人员专用
  9. Java多线程_1_Java内存模型_内存模型的3大特性
  10. 命令提示符下对用户的操作
  11. 南通大学python期末考试试卷_模拟试卷C
  12. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!
  13. 洛谷 P2324 [SCOI2005]骑士精神
  14. SQLite语法与Android数据库操作
  15. 百度翻译API使用简介
  16. python操作微信电脑版_python操作微信客户端:WechatPCAPI库实现自动化回复
  17. 使用JOL工具直接查看出java对象大小
  18. Mybatis Plus 代码生成器-让上班划水不再是梦
  19. 数字孪生流域建设是什么意思?它有哪些可行性关键技术?
  20. 网络统考计算机成绩什么时候出来,2019计算机二级成绩查询 计算机等级考试成绩什么时候出来...

热门文章

  1. 老板让全体员工《致加西亚的信》
  2. mysql 身份证号码判断
  3. 计算机学院陈冠华,生命科学学院2020年研究生学业奖学金(老生)获奖名单公示...
  4. iOS 10.0的网络问题:设置使用无线局域网与蜂窝移动的应用
  5. 操作系统的作用及类别
  6. 新站如何解决收录问题
  7. 超级节点的困境,社区治理的尴尬 |链捕手
  8. 短网址防封的原理是什么?
  9. 查询计算机的配置命令是什么,查看电脑配置指令大全
  10. 在团购网上空手赚钱项目,你敢做就敢赚!