如果您需要在 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.pdfoutput.pdf 等)以匹配实际文件位置,确认已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

理解在 Java 代码中向 PDF 添加水印

在 Java 中添加水印到 PDF 的代码遵循一个清晰的顺序,您可以将其应用于任何 PDF 文档。

  1. 初始化 Watermark 处理器 - Watermark watermark = new Watermark(); 创建用于应用水印的引擎。
  2. 创建 TextWatermark - TextWatermark 对象保存文本、字体、颜色、不透明度和旋转角度。
    Font font = new Font("Arial", Font.BOLD, 48);
    TextWatermark textWatermark = new TextWatermark("CONFIDENTIAL", font);
    
  3. 配置外观 - 如 setColorsetOpacitysetRotationAngle 等方法定义水印在页面上的显示方式。
  4. 加载源 PDF - PdfLoadOptions 加载输入文件并为大文档启用缓存,从而降低内存压力。
  5. 应用并保存 - 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

在页面上对齐水印

水平和垂直对齐属性接受 LeftCenterRightTopCenterBottom。居中是机密印章的常用方式,但您也可以将水印放置在角落以用于品牌宣传。

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 JavaWatermark 类。它抽象了 PDF 结构,让您可以专注于水印属性,如文本、字体和位置。

可用于设置文本水印样式的选项有哪些?
您可以设置字体 (new Font(...))、大小、样式(粗体、斜体)、颜色 (setColor)、不透明度 (setOpacity)、旋转 (setRotationAngle) 和对齐方式 (setHorizontalAlignmentsetVerticalAlignment)。这些选项在完整的代码示例中有演示。

SDK 能够高效处理大型 PDF 吗?
是的。通过配置 PdfLoadOptions.setCacheSize,您可以启用流式传输和缓存,从而降低多兆字节 PDF 的内存消耗。这使得在 Java 中为 PDF 添加水印的工作流适合在服务器上进行批处理。

我需要购买许可证才能运行此示例吗?
生产部署需要许可证。您可以从临时许可证页面获取临时许可证,或在定价页面查看完整的定价详情。

阅读更多