Ten artykuł jest przydatny dla programistów języka Java, którzy szukają sposobu na znajdowanie i usuwanie tekstowych lub graficznych znaków wodnych z dokumentów PDF, Word, Excel, PowerPoint i Visio. W jednym z naszych postów dowiedzieliśmy się znajdowanie i usuwanie znaków wodnych z dokumentów w C#. Przejdźmy teraz do krótkiego omówienia interfejsu API języka Java, który umożliwia dodawanie, znajdowanie i usuwanie znaków wodnych z różnych dokumentów na różne sposoby.
Java API do znakowania wodnego i usuwania
GroupDocs.Watermark for Java API obsługuje dodawanie tekstowych i graficznych znaków wodnych do wielu różnych formatów dokumentów. Ponadto ma również możliwość wyszukiwania i usuwania znaków wodnych z dokumentów. Interfejs API wyszukuje również obiekty znaku wodnego, które są dodawane za pomocą narzędzi innych firm. Pozwól więc, że zademonstruję, jak w kilku krokach usunąć znak wodny z dokumentu w Javie.
Możesz pobrać plik JAR z sekcji downloads lub dodać poniższą konfigurację w pom.xml swojej aplikacji Java opartej na Maven. Aby uzyskać szczegółowe informacje na temat interfejsu API, odwiedź stronę Odniesienie do interfejsu 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>
Kroki, aby usunąć znaki wodne z dokumentu w Javie
Zanim zaczniemy, spójrz na poniższy dokument PDF, który zawiera tekstowy znak wodny oraz znak wodny obrazu. Użyjemy tego dokumentu i usuniemy z niego znaki wodne.

-
Utwórz nowy projekt.
-
Dodaj następujące importy.
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;
- Utwórz instancję klasy Watermarker i załaduj dokument źródłowy.
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
- Znajdź znaki wodne na podstawie skonfigurowanych kryteriów wyszukiwania, korzystając z metody wyszukiwania.
// Skonfiguruj kryterium wyszukiwania znaku wodnego obrazu
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.
// Skonfiguruj kryterium wyszukiwania tekstowego znaku wodnego
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");
// Połączenie kryteriów wyszukiwania tekstu i obrazu
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);
- Przejrzyj kolekcję znaków wodnych i usuń znaki wodne za pomocą metody removeAt.
//Iteruj przez możliwe kolekcje znaków wodnych, sprawdzaj i usuwaj znaki wodne
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.");
}
}
- Zapisz wynikowy dokument metodą zapisu.
watermarker.save("filepath/without_watermark.pdf");
watermarker.close();
Istnieją również inne sposoby znajdowania i usuwania znaków wodnych z dokumentów przy użyciu różnych metod. Jeśli chcesz usunąć wszystkie znaki wodne z dokumentu lub chcesz pozbyć się niektórych selektywnych znaków wodnych różnego rodzaju:
- Możesz zebrać wszystkie możliwe znaki wodne.
- Iteruj kolekcję znaków wodnych lub uzyskaj bezpośredni dostęp do znaku wodnego za pomocą indeksu.
- W razie potrzeby sprawdź typ i dane znaku wodnego.
- Usuń go, jeśli spełnia Twoje wymagania.
remove, removeAt i clear to metody, których można odpowiednio użyć do usunięcia znaków wodnych. Aby uzyskać więcej informacji, zapoznaj się z artykułem w dokumentacji na temat wyszukiwania i modyfikowania znaków wodnych w Javie.
Kompletny kod
// Znajdź i usuń znaki wodne z dokumentów PDF, Word, Excel, PowerPoint i Visio w Javie
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf"); // Provide any supported document
// Skonfiguruj kryterium wyszukiwania znaku wodnego obrazu
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.
// Skonfiguruj kryterium wyszukiwania tekstowego znaku wodnego
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");
// Połączenie kryteriów wyszukiwania tekstu i obrazu
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);
//Iteruj przez możliwe kolekcje znaków wodnych, sprawdzaj i usuwaj znaki wodne
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();
Wyniki
Poniżej znajduje się zrzut ekranu wynikowego dokumentu PDF, który otrzymujemy po usunięciu znaków wodnych.

Wniosek
Wierzę, że jako programista Java nie będziesz się już wahał przed znalezieniem, a następnie usunięciem wszelkiego rodzaju znaków wodnych z obsługiwanych przez Microsoft i OpenOffice dokumentów edytorów tekstu, arkuszy kalkulacyjnych, prezentacji, dokumentów PDF i rysunków programu Visio.
Więcej informacji na temat interfejsu API można znaleźć w dokumentacji. W razie jakichkolwiek pytań skontaktuj się z nami @ forum.