当前位置: 首页 > news >正文

Java 实现PDF添加水印

maven依赖:

   <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version> </dependency>

网络地址添加水印代码:

    public static boolean waterMarkNet(String inputFile, String outputFile, String waterMarkName) {try{URL url = new URL(inputFile);PdfReader reader = new PdfReader(url);PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));//这里的字体设置比较关键,这个设置是支持中文的写法BaseFont base = BaseFont.createFont();//BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",   BaseFont.EMBEDDED);// 使用系统字体int total = reader.getNumberOfPages() + 1;PdfContentByte under;Rectangle pageRect = null;PdfGState gs = new PdfGState();//透明度gs.setFillOpacity(0.2f);gs.setStrokeOpacity(0.1f);for (int i = 1; i < total; i++){pageRect = stamper.getReader().getPageSizeWithRotation(i);under = stamper.getOverContent(i);under.saveState();under.setGState(gs);under.beginText();under.setFontAndSize(base, 50);under.setTextMatrix(30, 30);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 100, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 300, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 500, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 700, 20);// 添加水印文字under.endText();under.setLineWidth(10f);under.stroke();}stamper.close();return true;} catch (Exception e){e.printStackTrace();return false;

本地地址添加水印代码

/*** 功能描述: 本地文件添加水印** @param inputFile* @param outputFile* @param waterMarkName* @date 10:52 2024/11/20*/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();//BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",   BaseFont.EMBEDDED);// 使用系统字体int total = reader.getNumberOfPages() + 1;PdfContentByte under;Rectangle pageRect = null;PdfGState gs = new PdfGState();//透明度gs.setFillOpacity(0.2f);gs.setStrokeOpacity(0.1f);for (int i = 1; i < total; i++){pageRect = stamper.getReader().getPageSizeWithRotation(i);under = stamper.getOverContent(i);under.saveState();under.setGState(gs);under.beginText();under.setFontAndSize(base, 50);under.setTextMatrix(30, 30);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 100, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 300, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 500, 20);under.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 300, 700, 20);// 添加水印文字under.endText();under.setLineWidth(10f);under.stroke();}stamper.close();return true;} catch (Exception e){e.printStackTrace();return false;}}

测试代码

  public static void main(String[] args) {System.out.println(TestwaterMark.waterMark("https://XXXXXX/%E6%AD%A3%E6%96%87.pdf", "D:\\XXX\\XXX.pdf", "zymz"+DateUtils.dateTimeNow()));}
http://www.lryc.cn/news/488175.html

相关文章:

  • 网络安全问题概述
  • (udp)网络编程套接字Linux(整理)
  • Web应用安全入门:架构搭建、漏洞分析与HTTP数据包处理
  • [JAVA]MyBatis框架—获取SqlSession对象
  • Perl 简介
  • spring-bean的销毁流程
  • 问:Spring MVC DispatcherServlet流程步骤梳理
  • 用源码编译虚幻引擎,并打包到安卓平台
  • 快速搭建Android开发环境:Docker部署docker-android并实现远程连接
  • 「Mac玩转仓颉内测版21」基础篇1 - 仓颉程序的基本组成
  • 【Linux网络编程】简单的UDP套接字
  • 在Vue中使用Excalidraw实现在线画板
  • 游戏+AI的发展历程,AI技术在游戏行业的应用有哪些?
  • Methode Electronics EDI 需求分析
  • 2023AE软件、Adobe After Effects安装步骤分享教程
  • 【前端】JavaScript 变量引用、内存与数组赋值:深入解析三种情景
  • 本地项目运行提示跨域问题
  • C++ —— string类(上)
  • React Native Mac 环境搭建
  • Python Web 开发的路径管理艺术:FastAPI 项目中的最佳实践与问题解析20241119
  • Rust derive macro(Rust #[derive])Rust派生宏
  • springboot嗨玩旅游网站
  • 杰发科技AC7840——EEP中RAM的配置
  • 从零开始的c++之旅——map_set的使用
  • Docker中的一些常用命令
  • 自存 sql常见语句和实际应用
  • python | argparse模块在命令行的使用中的重要作用
  • 【HCIP]——OSPF综合实验
  • PW系列工控电脑复制机:效率与精度双重提升
  • 学习QT第二天