如果您需要在 Java 中为 PDF 添加水印,视觉覆盖可以保护您的文档免受未经授权的使用。Conholdate.Total for Java 提供了强大的 SDK,简化了服务器端的 PDF 操作。在本指南中,您将看到一个完整的可直接运行的示例,了解每行代码的作用,设置 Maven 依赖,并发现用于微调不透明度、旋转和对齐的选项,以实现专业效果。
完整代码示例:在 Java 中向 PDF 添加文字水印
以下示例演示如何使用 Conholdate.Total for Java 为 PDF 添加文本水印。
import com.groupdocs.watermark.Watermark;
import com.groupdocs.watermark.options.PdfLoadOptions;
import com.groupdocs.watermark.options.PdfSaveOptions;
import com.groupdocs.watermark.watermarks.TextWatermark;
import com.groupdocs.watermark.watermarks.HorizontalAlignment;
import com.groupdocs.watermark.watermarks.VerticalAlignment;
import java.awt.Color;
import java.awt.Font;
public class AddPdfWatermark {
public static void main(String[] args) {
String inputFile = "input.pdf";
String outputFile = "output.pdf";
// Create a text watermark
Font font = new Font("Arial", Font.BOLD, 48);
TextWatermark textWatermark = new TextWatermark("CONFIDENTIAL", font);
textWatermark.setColor(Color.RED);
textWatermark.setOpacity(0.3);
textWatermark.setRotationAngle(45);
textWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
textWatermark.setVerticalAlignment(VerticalAlignment.Center);
// Load options for the source PDF (enable caching for large files)
PdfLoadOptions loadOptions = new PdfLoadOptions(inputFile);
loadOptions.setCacheSize(100 * 1024 * 1024); // 100 MB cache
// Initialize the Watermark processor
Watermark watermark = new Watermark();
try {
// Apply the watermark to every page of the PDF
watermark.add(textWatermark, loadOptions);
// Save the watermarked PDF
PdfSaveOptions saveOptions = new PdfSaveOptions();
watermark.save(outputFile, saveOptions);
} catch (Exception e) {
System.err.println("Failed to add watermark: " + e.getMessage());
e.printStackTrace();
}
}
}
注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新文件路径(
input.pdf、output.pdf等)以匹配实际文件位置,确认已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。
理解在 Java 代码中向 PDF 添加水印
在 Java 中添加水印到 PDF 的代码遵循一个清晰的顺序,您可以将其应用于任何 PDF 文档。
- 初始化 Watermark 处理器 -
Watermark watermark = new Watermark();创建用于应用水印的引擎。 - 创建 TextWatermark -
TextWatermark对象保存文本、字体、颜色、不透明度和旋转角度。Font font = new Font("Arial", Font.BOLD, 48); TextWatermark textWatermark = new TextWatermark("CONFIDENTIAL", font); - 配置外观 - 如
setColor、setOpacity和setRotationAngle等方法定义水印在页面上的显示方式。 - 加载源 PDF -
PdfLoadOptions加载输入文件并为大文档启用缓存,从而降低内存压力。 - 应用并保存 -
watermark.add(textWatermark, loadOptions);将水印应用到每一页,watermark.save(outputFile, saveOptions);写入结果。
加载带缓存的源 PDF
当处理多兆字节的 PDF 时,启用缓存可以防止 SDK 将整个文档加载到内存中。代码行 loadOptions.setCacheSize(100 * 1024 * 1024); 为临时存储预留 100 MB,使处理器能够根据需要流式传输页面。这种方法在服务器环境中尤为有用,因为可能会运行许多并发的水印任务。
有关详细的 API 信息,请参阅 Java API 参考。
为 PDF 水印准备环境
在 Java 中添加水印到 PDF 的工作流首先需要添加 Maven 依赖。之后,您需要一个兼容的 JDK 并进行少量配置。
先决条件和 Java 版本
- 需要 Java 8 或更高版本;SDK 使用现代语言特性和流。
- Maven 3.5+ 简化了依赖管理。
- 确保项目的
pom.xml包含 Conholdate 仓库,以便 Maven 能解析该构件。
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
您也可以直接从下载页面获取 JAR 文件。添加依赖后,运行 mvn clean install 以验证 SDK 已在您的类路径中。
使用 REST API(可选)
如果您更喜欢语言无关的方法,Conholdate.Total 也提供了一个 REST 端点,可在无需任何 Java 代码的情况下添加水印。一个简单的 curl 命令如下所示:
curl -X POST "https://api.conholdate.com/v1/pdf/watermark" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.pdf" \
-F "text=CONFIDENTIAL" \
-F "font=Arial" \
-F "fontSize=48" \
-F "color=FF0000" \
-F "opacity=0.3" \
-F "angle=45" \
-F "horizontalAlignment=center" \
-F "verticalAlignment=center" \
-o output.pdf
REST 版本遵循相同的逻辑步骤:加载、配置、应用和保存,这样您可以选择最适合您架构的方法。
配置水印外观和位置
SDK 提供了多个属性,可让您微调水印。以下是最常用的设置。
自定义字体和颜色
您可以将默认的 Arial 字体替换为服务器上可用的任何 TrueType 字体。更改颜色只需传递不同的 java.awt.Color 常量或创建自定义的 RGB 值即可。
Font customFont = new Font("Times New Roman", Font.ITALIC, 36);
textWatermark.setColor(new Color(0, 102, 204)); // Deep blue
textWatermark.setFont(customFont);
调整不透明度和旋转
不透明度控制水印的透明程度。取值范围从 0.0(完全不可见)到 1.0(完全不透明)。旋转可让您倾斜文本,使其更难被移除。
textWatermark.setOpacity(0.45); // 45% opacity
textWatermark.setRotationAngle(30); // 30 degrees clockwise
在页面上对齐水印
水平和垂直对齐属性接受 Left、Center、Right 和 Top、Center、Bottom。居中是机密印章的常用方式,但您也可以将水印放置在角落以用于品牌宣传。
textWatermark.setHorizontalAlignment(HorizontalAlignment.Right);
textWatermark.setVerticalAlignment(VerticalAlignment.Bottom);
如果您想在 在 Java 中向 PDF 添加文本水印 时为每页使用不同的布局,您可以在逐页处理的循环中修改这些属性。如果您的使用场景需要更复杂的视觉效果,SDK 还支持图像水印、渐变填充和多行文本。
结论
在 Java 中为 PDF 添加水印非常简单,只需使用 Conholdate.Total for Java。SDK 能够高效地加载、处理和保存 PDF,即使是大型文件也受益于内置缓存。通过自定义不透明度、旋转角度、字体、颜色和对齐方式,您可以创建专业外观的水印,以防止未经授权的分发。请记得为生产环境获取合适的许可证;您可以在临时许可证页面请求临时许可证,或在定价页面查看定价选项。完成代码和配置步骤后,您即可将 PDF 水印集成到 Java 应用程序中。
FAQs
如何在 Java 中添加水印到 PDF,而无需编写底层 PDF 代码?
使用来自 Conholdate.Total for Java 的 Watermark 类。它抽象了 PDF 结构,让您可以专注于水印属性,如文本、字体和位置。
可用于设置文本水印样式的选项有哪些?
您可以设置字体 (new Font(...))、大小、样式(粗体、斜体)、颜色 (setColor)、不透明度 (setOpacity)、旋转 (setRotationAngle) 和对齐方式 (setHorizontalAlignment、setVerticalAlignment)。这些选项在完整的代码示例中有演示。
SDK 能够高效处理大型 PDF 吗?
是的。通过配置 PdfLoadOptions.setCacheSize,您可以启用流式传输和缓存,从而降低多兆字节 PDF 的内存消耗。这使得在 Java 中为 PDF 添加水印的工作流适合在服务器上进行批处理。
我需要购买许可证才能运行此示例吗?
生产部署需要许可证。您可以从临时许可证页面获取临时许可证,或在定价页面查看完整的定价详情。
