Добавление водяных знаков в PDF на Java
Contents
[
Hide
]
Артефакты водяных знаков позволяют размещать постоянные визуальные метки на странице без их смешивания с основным содержимым документа.
Извлечение артефактов водяных знаков из PDF
Используйте этот пример, когда необходимо проверить существующие артефакты водяных знаков и прочитать их текст или позицию.
- Откройте исходный PDF в объекте Document.
- Переберите коллекцию артефактов целевой страницы.
- Отфильтруйте артефакты пагинации водяных знаков и выведите их текст и прямоугольники.
public static void extractWatermarkFromPdf(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Artifact artifact : document.getPages().get_Item(1).getArtifacts()) {
if (artifact.getType() == Artifact.ArtifactType.Pagination
&& artifact.getSubtype() == Artifact.ArtifactSubtype.Watermark) {
System.out.println(artifact.getText() + " " + artifact.getRectangle());
}
}
}
}
Добавление артефакта водяного знака
Используйте этот пример, когда страница должна отображать центрированный текстовый водяной знак с пользовательским вращением, непрозрачностью и размещением фона.
- Откройте исходный PDF в объекте Документ.
- Создайте WatermarkArtifact и настройте его параметры состояния текста и размещения.
- Добавьте водяной знак на страницу и сохраните выходной файл.
public static void addWatermarkArtifact(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
TextState textState = new TextState();
textState.setFontSize(72);
textState.setForegroundColor(Color.getBlueViolet());
textState.setFontStyle(FontStyles.Bold);
textState.setFont(FontRepository.findFont("Arial"));
WatermarkArtifact watermark = new WatermarkArtifact();
watermark.setTextAndState("WATERMARK", textState);
watermark.setArtifactHorizontalAlignment(HorizontalAlignment.Center);
watermark.setArtifactVerticalAlignment(VerticalAlignment.Center);
watermark.setRotation(60);
watermark.setOpacity(0.2);
watermark.setBackground(true);
document.getPages().get_Item(1).getArtifacts().add(watermark);
document.save(outputFile.toString());
}
}
Удаление артефактов водяных знаков
Используйте этот подход, когда существующие артефакты водяных знаков должны быть удалены со страницы.
- Откройте исходный PDF в объекте Документ.
- Переберите коллекцию артефактов страницы в обратном порядке.
- Удалите артефакты пагинации, чей подтип — водяной знак, затем сохраните документ.
public static void deleteWatermarkArtifact(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
for (int i = document.getPages().get_Item(1).getArtifacts().size(); i >= 1; i--) {
Artifact artifact = document.getPages().get_Item(1).getArtifacts().get_Item(i);
if (artifact.getType() == Artifact.ArtifactType.Pagination
&& artifact.getSubtype() == Artifact.ArtifactSubtype.Watermark) {
document.getPages().get_Item(1).getArtifacts().delete(artifact);
}
}
document.save(outputFile.toString());
}
}