Аннотации водяных знаков с использованием Java
Contents
[
Hide
]
Аннотации водяного знака позволяют размещать повторно используемое наложенное содержимое на странице, управляя им через коллекцию аннотаций.
Добавление аннотации водяного знака
Используйте этот пример, когда вам нужна текстовая аннотация водяного знака с пользовательскими настройками шрифта и непрозрачностью.
- Откройте исходный PDF-документ с помощью Document.
- Создайте WatermarkAnnotation и добавьте её на страницу.
- Настройте 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());
}
}
Получение аннотаций водяных знаков
Этот пример сканирует коллекцию аннотаций и выводит прямоугольник каждой аннотации водяного знака.
- Откройте исходный PDF-документ с помощью Document.
- Переберите аннотации на целевой странице.
- Отфильтруйте аннотации по 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());
}
}
}
}
Удаление аннотаций водяных знаков
Используйте этот подход, когда существующие аннотации водяных знаков должны быть удалены из документа.
- Откройте исходный PDF-документ с помощью Document.
- Соберите аннотации типа AnnotationType.
Watermark. - Удалите собранные аннотации и сохраните выходной файл.
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());
}
}