欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > Java 对 PDF 文件添加水印

Java 对 PDF 文件添加水印

2025/4/26 19:28:18 来源:https://blog.csdn.net/zru_9602/article/details/146454432  浏览:    关键词:Java 对 PDF 文件添加水印

Java 对 PDF 文件添加水印

在实际开发中,我们可能需要对 PDF 文件添加水印,例如公司标识、版权信息等。本文介绍如何使用 Java 及 iText 库向 PDF 文件添加水印。


1. 引入 iText 依赖

iText 是一个强大的 PDF 处理库,支持创建、修改 PDF 文件。要使用 iText,请在 pom.xml 文件中添加以下 Maven 依赖:

<dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.16</version></dependency>
</dependencies>

2. 添加文本水印

以下示例展示了如何向 PDF 每一页添加半透明的文本水印:

import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;import java.io.File;
import java.io.IOException;public class PdfWatermark {public static void main(String[] args) throws IOException {String src = "input.pdf";String dest = "output.pdf";PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));int numberOfPages = pdfDoc.getNumberOfPages();for (int i = 1; i <= numberOfPages; i++) {PdfPage page = pdfDoc.getPage(i);Rectangle pageSize = page.getPageSize();PdfCanvas over = new PdfCanvas(page);Canvas canvas = new Canvas(over, pageSize);Paragraph watermark = new Paragraph("CONFIDENTIAL").setFontSize(50).setFontColor(ColorConstants.GRAY).setOpacity(0.3f);canvas.showTextAligned(watermark,pageSize.getWidth() / 2,pageSize.getHeight() / 2,TextAlignment.CENTER,(float) Math.toRadians(45));}pdfDoc.close();System.out.println("水印添加完成!");}
}

说明

  • 读取已有 PDF 并创建新的 PDF 文件。
  • 遍历所有页面,绘制文本水印。
  • setOpacity(0.3f) 使水印半透明。
  • showTextAligned 方法可调整水印位置和旋转角度。

3. 添加图片水印

如果需要使用图片作为水印,可以使用 Image 类:

import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.element.Image;import java.io.IOException;public class PdfImageWatermark {public static void main(String[] args) throws IOException {String src = "input.pdf";String dest = "output_with_image_watermark.pdf";String watermarkPath = "watermark.png";PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));ImageData imageData = ImageDataFactory.create(watermarkPath);int numberOfPages = pdfDoc.getNumberOfPages();for (int i = 1; i <= numberOfPages; i++) {PdfPage page = pdfDoc.getPage(i);Rectangle pageSize = page.getPageSize();PdfCanvas over = new PdfCanvas(page);Canvas canvas = new Canvas(over, pageSize);Image watermark = new Image(imageData);watermark.setOpacity(0.3f).scaleToFit(pageSize.getWidth() / 2, pageSize.getHeight() / 2).setFixedPosition(pageSize.getWidth() / 4, pageSize.getHeight() / 4);canvas.add(watermark);}pdfDoc.close();System.out.println("图片水印添加完成!");}
}

说明

  • 读取 PDF 文件和水印图片。
  • 使用 setOpacity(0.3f) 让水印透明。
  • scaleToFit 控制图片大小。
  • setFixedPosition 设置水印位置。

4. 结论

通过 iText,我们可以轻松地为 PDF 添加文本或图片水印。以上代码可根据需求进行调整,如:

  • 修改水印字体、颜色、透明度。
  • 动态调整水印位置。
  • 处理加密 PDF(需要解密后再添加水印)。

希望本教程对你有所帮助!🚀

版权声明:

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

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

热搜词