Аннотации водяных знаков с использованием Java

Аннотации водяного знака позволяют размещать повторно используемое наложенное содержимое на странице, управляя им через коллекцию аннотаций.

Добавление аннотации водяного знака

Используйте этот пример, когда вам нужна текстовая аннотация водяного знака с пользовательскими настройками шрифта и непрозрачностью.

  1. Откройте исходный PDF-документ с помощью Document.
  2. Создайте WatermarkAnnotation и добавьте её на страницу.
  3. Настройте TextState, текст водяного знака и непрозрачность, затем сохраните документ.
public static void watermarkAdd(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Page page = document.getPages().get_Item(1);

        WatermarkAnnotation watermarkAnnotation = new WatermarkAnnotation(
                page,
                new Rectangle(100, 100, 400, 200, true));

        page.getAnnotations().add(watermarkAnnotation);

        TextState textState = new TextState();
        textState.setForegroundColor(Color.getBlue());
        textState.setFontSize(25);
        textState.setFont(FontRepository.findFont("Arial"));

        watermarkAnnotation.setOpacity(0.5);
        watermarkAnnotation.setTextAndState(new String[]{"HELLO", "Line 1", "Line 2"}, textState);

        document.save(outputFile.toString());
    }
}

Получение аннотаций водяных знаков

Этот пример сканирует коллекцию аннотаций и выводит прямоугольник каждой аннотации водяного знака.

  1. Откройте исходный PDF-документ с помощью Document.
  2. Переберите аннотации на целевой странице.
  3. Отфильтруйте аннотации по AnnotationType.Watermark и выведите их прямоугольники.
public static void watermarkGet(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Annotation a : document.getPages().get_Item(1).getAnnotations()) {
            if (a.getAnnotationType() == AnnotationType.Watermark) {
                System.out.println(a.getRect());
            }
        }
    }
}

Удаление аннотаций водяных знаков

Используйте этот подход, когда существующие аннотации водяных знаков должны быть удалены из документа.

  1. Откройте исходный PDF-документ с помощью Document.
  2. Соберите аннотации типа AnnotationType.Watermark.
  3. Удалите собранные аннотации и сохраните выходной файл.
public static void watermarkDelete(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        List<Annotation> toDelete = new ArrayList<>();
        for (Annotation a : document.getPages().get_Item(1).getAnnotations()) {
            if (a.getAnnotationType() == AnnotationType.Watermark) {
                toDelete.add(a);
            }
        }
        for (Annotation a : toDelete) {
            document.getPages().get_Item(1).getAnnotations().delete(a);
        }
        document.save(outputFile.toString());
    }
}

Связанные темы об аннотациях