Эта статья полезна для разработчиков Java, которые ищут способ найти и удалить текст или изображение водяные знаки из PDF , Word , Excel , PowerPoint , Visio и Электронная почта документы.
Групповые документы. Водяной знак для Java API поддерживает добавление текстовых и графических водяных знаков в широкий спектр форматов документов. Кроме того, он также имеет возможность находить и удалять водяные знаки из документов. API также находит объекты водяных знаков, добавленные с помощью сторонних инструментов. Итак, позвольте мне продемонстрировать, как вы можете удалить водяной знак из документа за несколько шагов в Java.
Прежде чем мы начнем, взгляните на следующий PDF-документ, который содержит текст, а также водяной знак изображения. Мы будем использовать этот документ и удалим с него водяные знаки.
Шаги по удалению водяных знаков из документа
1. Создайте новый проект.
2. Добавьте следующий импорт.
import com.groupdocs.watermark.Document; import com.groupdocs.watermark.ImageDctHashSearchCriteria; import com.groupdocs.watermark.ImageSearchCriteria; import com.groupdocs.watermark.PossibleWatermarkCollection; import com.groupdocs.watermark.SearchCriteria; import com.groupdocs.watermark.TextSearchCriteria;
3. Создайте экземпляр класса Document и загрузите исходный документ.
Document doc =Document.load("watermarked.pdf");
4. Найдите водяные знаки на основе критериев поиска, используя метод find Watermarks (если вы не передадите никаких критериев поиска, findWatermark вернет все возможные объекты водяных знаков).
// configure the search criteria for image watermark
ImageSearchCriteria imageSearchCriteria =newImageDctHashSearchCriteria("watermark.png");
// configure the search criteria for text watermark
TextSearchCriteria textSearchCriteria =newTextSearchCriteria("CONFIDENTIAL");
// combine the search criteria
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
// find possible watermarks
PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(combinedSearchCriteria);
5. Выполните итерацию по коллекции водяных знаков и удалите водяные знаки с помощью метода RemoveAt .
// iterate through the collection and remove watermarks
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 .
doc.save("without_watermark.pdf");
doc.close();
Полный Код
Document doc =Document.load("watermarked.pdf");
// configure the search criteria for image watermark
ImageSearchCriteria imageSearchCriteria =newImageDctHashSearchCriteria("watermark.png");
// configure the search criteria for text watermark
TextSearchCriteria textSearchCriteria =newTextSearchCriteria("CONFIDENTIAL");
// combine the search criteria
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = doc.findWatermarks(combinedSearchCriteria);
// iterate through the collection and remove watermarks
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.");
}
}
doc.save("without_watermark.pdf");
doc.close();
Результаты
Ниже приведен скриншот результирующего PDF-документа, который мы получаем после удаления водяных знаков.
Оригинал: “https://dev.to/usmanaziz/find-and-remove-watermarks-from-documents-in-java-1j2g”