Ця стаття корисна для розробників Java, які шукають спосіб знайти та видалити водяні знаки тексту чи зображення з документів PDF, Word, Excel, PowerPoint і Visio. В одній із наших публікацій ми навчилися знаходити та видаляти водяні знаки з документів у C#. Давайте перейдемо до короткого ознайомлення з Java API, який дозволяє додавати, знаходити та видаляти водяні знаки з різних документів різними способами.

Java API для водяних знаків і видалення

API GroupDocs.Watermark for Java підтримує додавання текстових і графічних водяних знаків до широкого діапазону форматів документів. Крім того, він також має можливість знаходити та видаляти водяні знаки з документів. API також знаходить об’єкти водяних знаків, додані за допомогою інструментів сторонніх розробників. Тож дозвольте мені продемонструвати, як можна видалити водяний знак із документа за кілька кроків у Java.

Ви можете отримати JAR із розділу завантаження або додати наступну конфігурацію в pom.xml вашої програми Java на основі Maven. Щоб дізнатися більше про API, відвідайте API Reference.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-watermark</artifactId>
        <version>20.5</version> 
</dependency>

Кроки для видалення водяних знаків з документа в Java

Перш ніж почати, перегляньте наведений нижче PDF-документ, який містить текстовий водяний знак, а також водяний знак зображення. Ми використаємо цей документ і видалимо з нього водяні знаки.

PDF-файл із водяними знаками - GroupDocs
  1. Створіть новий проект.

  2. Додайте такі імпорти.

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.search.ImageDctHashSearchCriteria;
import com.groupdocs.watermark.search.ImageSearchCriteria;
import com.groupdocs.watermark.search.PossibleWatermarkCollection;
import com.groupdocs.watermark.search.SearchCriteria;
import com.groupdocs.watermark.search.TextSearchCriteria;
  1. Створіть екземпляр класу Watermarker і завантажте вихідний документ.
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
  1. Знайдіть водяні знаки на основі налаштованих критеріїв пошуку за допомогою методу пошуку.
// Налаштувати критерій пошуку водяного знака зображення
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.

// Налаштувати критерій пошуку для текстового водяного знака
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");

// Поєднання критеріїв пошуку тексту та зображення
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);
  1. Перегляньте колекцію водяних знаків і видаліть водяні знаки за допомогою методу removeAt.
//Перегляньте можливу колекцію водяних знаків, перевірте та видаліть водяні знаки
while(possibleWatermarks.getCount()>0)
{
	if (possibleWatermarks.get_Item(0).getImageData() != null)
	{
		possibleWatermarks.removeAt(0);
		System.out.println("Removed Image Watermark.");
	}
	else
	{
		possibleWatermarks.removeAt(0);
		System.out.println("Removed Text Watermark.");
	}
} 
  1. Збережіть отриманий документ за допомогою методу збереження.
 watermarker.save("filepath/without_watermark.pdf");
 watermarker.close(); 

Існують також деякі інші способи пошуку та видалення водяних знаків з документів різними методами. Якщо ви хочете видалити всі водяні знаки з документа або хочете позбутися деяких вибіркових водяних знаків різного типу:

  • Ви можете зібрати всі можливі водяні знаки.
  • Переглядайте колекцію водяних знаків або прямий доступ до водяного знака з індексом.
  • Перевірте тип водяного знака та дані, якщо потрібно.
  • Видаліть його, якщо він відповідає вашим вимогам.

remove, removeAt і clear – це методи, які можна використовувати для видалення водяних знаків. Щоб дізнатися більше, перегляньте статтю документації про пошук і зміну водяних знаків у Java.

Повний код

// Знайдіть і видаліть водяні знаки з документів PDF, Word, Excel, PowerPoint і Visio у Java
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf"); // Provide any supported document

// Налаштувати критерій пошуку водяного знака зображення
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.

// Налаштувати критерій пошуку для текстового водяного знака
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");

// Поєднання критеріїв пошуку тексту та зображення
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);

//Перегляньте можливу колекцію водяних знаків, перевірте та видаліть водяні знаки
while(possibleWatermarks.getCount()>0)
{
	if (possibleWatermarks.get_Item(0).getImageData() != null)
	{
		possibleWatermarks.removeAt(0);
		System.out.println("Removed Image Watermark.");
	}
	else
	{
		possibleWatermarks.removeAt(0);
		System.out.println("Removed Text Watermark.");
	}
} 
watermarker.save("filepath/without_watermark.pdf");
watermarker.close(); 

Результати

Нижче наведено скріншот отриманого документа PDF, який ми отримуємо після видалення водяних знаків.

PDF-файл, отриманий після видалення водяних знаків за допомогою Watermarking Java API від GroupDocs

Висновок

Я вважаю, що як розробник Java ви більше не будете вагатися, чи знайдете та видалите будь-які водяні знаки з текстових документів, електронних таблиць, презентацій, PDF-документів і малюнків Visio, що підтримуються Microsoft і OpenOffice.

Ви можете дізнатися більше про API в документації. Якщо виникнуть запитання, зв’яжіться з нами на форумі.

Дивись також