Эта статья полезна для разработчиков Java, которые ищут способ найти и удалить текстовые или водяные знаки на изображениях из PDF, Word, Excel, PowerPoint и **Visio. ** документы. В одном из наших постов мы узнали поиск и удаление водяных знаков из документов на C#. Давайте теперь быстро рассмотрим Java API, который позволяет добавлять, находить и удалять водяные знаки из различных документов разными способами.

Java API для добавления и удаления водяных знаков

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

Вы можете получить JAR из раздела downloads или добавить следующую конфигурацию в pom.xml вашего Java-приложения на основе Maven. Для получения подробной информации об API посетите Справочник по API.

<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;

3. Создайте экземпляр класса Watermarker и загрузите исходный документ.

Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");

4. Найдите водяные знаки на основе настроенных критериев поиска, используя метод поиска.

// Настроить критерий поиска для изображения водяного знака
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);

5. Перебрать коллекцию водяных знаков и удалить водяные знаки с помощью метода 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.");
	}
} 

6. Сохраните полученный документ методом save.

 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 вы больше не будете колебаться, чтобы найти, а затем удалить любые водяные знаки из Microsoft и OpenOffice, поддерживаемые текстовые документы, электронные таблицы, презентации, Документы PDF и рисунки Visio.

Вы можете узнать больше об API из документации. Если у вас возникнут вопросы, свяжитесь с нами @forum.

Смотрите также