Ця стаття корисна для розробників 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-документ, який містить текстовий водяний знак, а також водяний знак зображення. Ми використаємо цей документ і видалимо з нього водяні знаки.
-
Створіть новий проект.
-
Додайте такі імпорти.
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;
- Створіть екземпляр класу Watermarker і завантажте вихідний документ.
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
- Знайдіть водяні знаки на основі налаштованих критеріїв пошуку за допомогою методу пошуку.
// Налаштувати критерій пошуку водяного знака зображення
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);
- Перегляньте колекцію водяних знаків і видаліть водяні знаки за допомогою методу 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.");
}
}
- Збережіть отриманий документ за допомогою методу збереження.
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, який ми отримуємо після видалення водяних знаків.
Висновок
Я вважаю, що як розробник Java ви більше не будете вагатися, чи знайдете та видалите будь-які водяні знаки з текстових документів, електронних таблиць, презентацій, PDF-документів і малюнків Visio, що підтримуються Microsoft і OpenOffice.
Ви можете дізнатися більше про API в документації. Якщо виникнуть запитання, зв’яжіться з нами на форумі.