Как добавить водяной знак в PDF с помощью GroupDocs.Watermark на Java

В современном цифровом мире как добавить водяной знак в PDF — частый вопрос разработчиков, создающих защищённые документооборотные решения. Защищаете конфиденциальные отчёты или брендуете корпоративные PDF‑файлы — библиотека GroupDocs.Watermark предоставляет чистый программный способ добавления и управления водяными знаками в Java. В этом руководстве мы покажем, как загрузить PDF, заменить изображения внутри определённых артефактов и сохранить окончательный документ с водяным знаком, учитывая производительность и безопасность.

Быстрые ответы

  • Какая библиотека поддерживает добавление водяных знаков в PDF на Java? GroupDocs.Watermark for Java.
  • Можно ли заменять изображения внутри PDF? Да, можно выбрать отдельные артефакты и заменить изображения.
  • Нужна ли лицензия? Бесплатная пробная версия подходит для тестирования; для продакшн‑использования требуется полная лицензия.
  • Поддерживается ли PDF с паролем? Конечно — используйте PdfLoadOptions для указания пароля.
  • Как сохранить изменённый файл? Вызовите watermarker.save("output_path.pdf"), а затем close().

Что такое «как добавить водяной знак в PDF»?

Водяной знак в PDF — это встраивание видимых или невидимых отметок (логотипов, текста, изображений) непосредственно в документ. Это защищает интеллектуальную собственность, обеспечивает брендинг и помогает отслеживать распространение документа.

Почему стоит использовать GroupDocs.Watermark для Java?

  • Полный контроль над изображениями и текстовыми водяными знаками.
  • Лёгкая интеграция через Maven или прямую загрузку JAR‑файла.
  • Надёжная работа с PDF, защищёнными паролем, и большими файлами.
  • API, ориентированные на производительность, позволяют пакетно обрабатывать документы.

Предварительные требования

  • Java Development Kit (JDK) 8+ установлен.
  • IDE (IntelliJ IDEA, Eclipse или аналог).
  • Библиотека GroupDocs.Watermark добавлена в проект (см. фрагмент Maven ниже).

Настройка GroupDocs.Watermark для Java

Добавьте репозиторий и зависимость в ваш pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/watermark/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-watermark</artifactId>
      <version>24.11</version>
   </dependency>
</dependencies>

Если вы не используете Maven, скачайте последний JAR‑файл с GroupDocs.Watermark for Java releases.

Получение лицензии

Получите пробную или полную лицензию на сайте GroupDocs. Файл лицензии можно загрузить во время выполнения, чтобы разблокировать все функции.

Базовая инициализация и настройка

Ниже минимальный код для создания экземпляра Watermarker:

import com.groupdocs.watermark.Watermarker;

public class Main {
    public static void main(String[] args) throws Exception {
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf");
        // Additional operations can be performed here.
        watermarker.close();
    }
}

Как добавить водяной знак в PDF с помощью GroupDocs.Watermark

Загрузка PDF‑документа

Загрузка PDF — первый шаг перед любыми операциями по добавлению водяных знаков или замене изображений.

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.PdfLoadOptions;

public class LoadPdfDocument {
    public static void run() throws Exception {
        PdfLoadOptions loadOptions = new PdfLoadOptions();
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf", loadOptions);
    }
}

Пояснение:

  • PdfLoadOptions позволяет настроить работу с паролем, параметры рендеринга и многое другое.
  • Конструктор Watermarker принимает путь к файлу и параметры загрузки, предоставляя готовый к использованию объект.

Замена изображения в конкретном артефакте

Иногда требуется заменить существующее изображение (например, устаревший логотип) внутри страницы PDF. Ниже показан код, который выбирает артефакты на первой странице и меняет их изображения.

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.PdfArtifact;
import com.groupdocs.watermark.contents.PdfContent;
import com.groupdocs.watermark.contents.PdfWatermarkableImage;

public class ReplaceImageInArtifact {
    public static void run(Watermarker watermarker) throws Exception {
        PdfContent pdfContent = watermarker.getContent(PdfContent.class);
        File imageFile = new File("YOUR_DOCUMENT_DIRECTORY/test_image.png");
        byte[] imageBytes = new byte[(int) imageFile.length()];
        InputStream imageStream = new FileInputStream(imageFile);
        imageStream.read(imageBytes);
        imageStream.close();
        for (PdfArtifact artifact : pdfContent.getPages().get_Item(0).getArtifacts()) {
            if (artifact.getImage() != null) {
                artifact.setImage(new PdfWatermarkableImage(imageBytes));
            }
        }
    }
}

Пояснение:

  • PdfContent даёт доступ ко всей структуре PDF.
  • PdfArtifact представляет каждый рисуемый элемент на странице; мы отфильтровываем те, которые содержат изображения.
  • Создавая новый PdfWatermarkableImage из массива байтов, мы заменяем оригинальное изображение, не затрагивая остальное содержимое.

Сохранение и закрытие PDF‑документа с водяным знаком

После внесения изменений сохраняем файл и освобождаем ресурсы.

import com.groupdocs.watermark.Watermarker;

public class SaveAndCloseDocument {
    public static void run(Watermarker watermarker) throws Exception {
        watermarker.save("YOUR_OUTPUT_DIRECTORY/output_document.pdf");
        watermarker.close();
    }
}

Пояснение:

  • save() записывает изменённый PDF в указанное место.
  • close() освобождает память и любые файловые дескрипторы, удерживаемые библиотекой.

Практические применения

  • Безопасное распределение документов: заменяйте конфиденциальные изображения на версии с водяным знаком перед отправкой PDF внешним партнёрам.
  • Согласованность бренда: автоматизируйте обновление логотипов во всех корпоративных PDF в одной пакетной операции.
  • Регуляторная отчётность: вставляйте печати соответствия или обновлённую графику в генерируемые отчёты.
  • Интеграция с DMS: подключите процесс водяных знаков к системе управления документами для автоматического применения политик.

Соображения по производительности

  • Управление памятью: всегда закрывайте потоки (InputStream, Watermarker) сразу после завершения работы.
  • Пакетная обработка: при больших объёмах создавайте один экземпляр Watermarker на документ и переиспользуйте объекты, где это возможно.
  • Асинхронные операции: рассматривайте выполнение шагов загрузки/сохранения в отдельном потоке или с использованием CompletableFuture, чтобы UI оставался отзывчивым.

Часто задаваемые вопросы

В: Можно ли добавить водяной знак в PDF, защищённый паролем?
О: Да. Укажите пароль через PdfLoadOptions.setPassword("yourPassword") перед загрузкой.

В: Есть ли ограничение на количество изображений, которые можно заменить в одном PDF?
О: Жёсткого ограничения нет, но очень большие PDF могут требовать больше памяти; при необходимости обрабатывайте их частями.

В: Нужна ли лицензия для сборок в процессе разработки?
О: Пробная лицензия подходит для оценки; для продакшн‑развёртываний требуется полная лицензия.

В: Чем GroupDocs.Watermark отличается от простого наложения изображения?
О: Библиотека встраивает изображение в поток содержимого PDF, делая его частью документа, а не отдельным слоем, который легко удалить.

В: Можно ли комбинировать текстовые и изображённые водяные знаки в одном документе?
О: Конечно. Используйте TextWatermark вместе с ImageWatermark в одной сессии Watermarker.


Последнее обновление: 2026-01-29
Тестировано с: GroupDocs.Watermark 24.11
Автор: GroupDocs