欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 使用 Java 在后端 为 PDF 添加水印

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

2025/3/10 17:10:59 来源:https://blog.csdn.net/wangyaodong915/article/details/146067464  浏览:    关键词:使用 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.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词