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.

Plik PDF ze znakami wodnymi — GroupDocs
  1. Utwórz nowy projekt.

  2. 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;
  1. Utwórz instancję klasy Watermarker i załaduj dokument źródłowy.
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
  1. 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);
  1. 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.");
	}
} 
  1. 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.

Wynikowy plik PDF po usunięciu znaków wodnych przy użyciu Watermarking Java API firmy GroupDocs

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.

Zobacz też