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

使用 Java 在后端 为 PDF 添加水印

使用 Java 在后端 为 PDF 添加水印

在日常办公和文档处理过程中,我们经常需要为 PDF 添加水印,以保护文档的版权或标识文档的机密级别。本文将介绍 PDFWatermarkUtils 工具类,它是一个基于 Java 和 iText(lowagie)库的 PDF 水印添加工具,能够支持自定义水印文本、字体大小、颜色、透明度等。

1. PDFWatermarkUtils 简介

PDFWatermarkUtils 主要提供两种方式为 PDF 添加水印:

  • 指定位置水印:允许用户自定义水印的 X、Y 坐标及旋转角度。
  • 全屏水印:在整个 PDF 页面上重复添加水印,以确保文档的防伪性。

此外,该工具类还支持透明度控制、不同水印位置选择(如右上角、右下角等),以及确保目录存在等实用功能。

2. 主要功能分析

2.1 构造函数

类提供了无参和有参构造函数,以便用户可以自定义水印文本、字体大小、颜色、透明度等属性。例如:

PDFWatermarkUtils watermarkUtils = new PDFWatermarkUtils("Confidential", 18, 0.5f, 0.3f, true);

其中:

  • watermarkText:水印文本内容
  • fontSize:字体大小
  • fontGrayColor:字体颜色(灰度值)
  • fontOpacity:字体透明度
  • isSetOpacity:是否设置透明度
2.2 添加水印到指定位置

addWatermark 方法允许用户在 PDF 的特定位置添加水印。

String newFilePath = watermarkUtils.addWatermark("D:/test.pdf", "test.pdf", 100, 200, 45, "rightTop");

该方法的参数如下:

  • filePath:PDF 文件路径
  • filename:文件名
  • xy:水印的 X 和 Y 坐标
  • rotation:水印旋转角度
  • positionParam:水印相对位置(支持 rightToprightBottom
2.3 添加全屏水印

addFullScreenWatermark 方法在 PDF 整个页面上添加水印,确保所有内容都被水印覆盖。

String newFilePath = watermarkUtils.addFullScreenWatermark("D:/test.pdf", "test.pdf");

该方法会在 PDF 页面顶部、中部、底部各添加一条水印。

2.4 透明度控制

如果 isSetOpacity 设置为 true,代码会创建 PdfGState 对象并设置 fillOpacity 以控制水印的透明度。

PdfGState gs = new PdfGState();
gs.setFillOpacity(this.fontOpacity);
content.setGState(gs);

3. 目录管理

在处理 PDF 文件时,临时文件存放目录 D:\WEAVER\pdf_tmp 可能不存在,因此 ensureDirectoryExists 方法用于检查目录是否存在,并在必要时创建目录:

private Path ensureDirectoryExists(String dirPath) throws IOException {
   
    Path path = Paths.get(dirPath);
    if (!Files.exists(path)) {
   
        Files.createDirectories(path);
    }
    return path;
}

4. 使用示例

以下是一个完整的示例,展示如何使用 PDFWatermarkUtils 添加水印:

public class Main {
   
    public static void main(String[] args) {
   
        PDFWatermarkUtils watermarkUtils = new PDFWatermarkUtils("Confidential", 20, 0.5f, 0.3f, true);
        String watermarkedFile = watermarkUtils.addFullScreenWatermark("D:/original.pdf", "original.pdf");
        System.out.println("Watermarked file saved at: " + watermarkedFile);
    }
}

5. 结论

PDFWatermarkUtils 是一个实用的 PDF 水印工具,能够支持不同的水印样式、透明度、字体大小等。无论是单页水印还是全屏水印,该工具类都能很好地满足需求。在实际应用中,该工具可用于合同文件保护、内部文档标识等场景。

如果你有更复杂的水印需求,例如图片水印、多种字体支持等,可以基于此类进一步扩展。

6. 完整代码

package com.demo;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import org.apache.commons.lang3.StringEscapeUtils;
import weaver.general.

相关文章:

  • 电脑中本地部署阉割版DeepSeek或其他大模型的方法
  • ES-分词器安装与使用详解
  • MWC 2025 | 移远通信推出AI智能无人零售解决方案,以“动态视觉+边缘计算”引领智能零售新潮流
  • Hive的架构
  • Python 相对路径写法
  • 掌握MiniQMT:程序化下单与撤单的高效实现
  • 【vLLM 教程】使用 TPU 安装
  • 《Natural Actor-Critic》译读笔记
  • DMR协议空中接口部分
  • Vulnhub-election靶机
  • shell编程——运算符和运算命令
  • 硬件基础(4):(1)AD采集电路设计
  • <论文>MiniCPM:利用可扩展训练策略揭示小型语言模型的潜力
  • Tomcat 使用与调优全解析
  • [Linux]进程
  • 财务会计域——合并报表系统设计
  • 7.2 奇异值分解的基与矩阵
  • 线程通信---java
  • 【Python字符串】\n是什么?它与raw字符串、多行字符串的运用有什么关系?
  • FPGA|Verilog-SPI驱动
  • 专业的网站建设方案/郑州网站关键词优化公司
  • 网站保护等级是企业必须做的么/网站管理系统
  • 做网站 传视频 用什么笔记本好/友情链接交换网址大全
  • 室内设计公司网站设计/站长工具中文
  • 网站建设 模版选择中心/互联网销售公司
  • wordpress 插件 h5/手机游戏性能优化软件