Tento článek je užitečný pro vývojáře v jazyce Java, kteří hledají způsob, jak najít a odstranit textové nebo obrázkové vodoznaky z dokumentů PDF, Word, Excel, PowerPoint a Visio. V jednom z našich příspěvků jsme se naučili najít a odstranit vodoznaky z dokumentů v C#. Pojďme se nyní rychle podívat na něco málo o Java API, které umožňuje přidávat, vyhledávat a odstraňovat vodoznaky z různých dokumentů různými způsoby.

Java API pro vodoznak a odstranění

GroupDocs.Watermark for Java API podporuje přidávání textových a obrazových vodoznaků do široké škály formátů dokumentů. Kromě toho má také schopnost najít a odstranit vodoznaky z dokumentů. Rozhraní API také najde objekty vodoznaku, které jsou přidány pomocí nástrojů třetích stran. Dovolte mi tedy ukázat, jak můžete odstranit vodoznak z dokumentu v několika krocích v Java.

JAR můžete získat ze sekce ke stažení nebo přidat následující konfiguraci do pom.xml vaší Java aplikace založené na Maven. Podrobnosti o rozhraní API naleznete v Odkaz na rozhraní 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>

Kroky k odstranění vodoznaků z dokumentu v Java

Než začneme, podívejte se na následující dokument PDF, který obsahuje textový vodoznak i vodoznak obrázku. Použijeme tento dokument a odstraníme z něj vodoznaky.

PDF soubor s vodoznaky - GroupDocs
  1. Vytvořte nový projekt.

  2. Přidejte následující 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. Vytvořte instanci třídy Watermarker a načtěte zdrojový dokument.
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
  1. Najděte vodoznaky na základě nakonfigurovaných kritérií vyhledávání pomocí metody vyhledávání.
// Nakonfigurujte vyhledávací kritérium pro vodoznak obrázku
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.

// Nakonfigurujte vyhledávací kritérium pro textový vodoznak
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");

// Kombinace kritérií vyhledávání textu a obrázků
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);
  1. Opakujte sbírku vodoznaků a odstraňte vodoznaky pomocí metody removeAt.
//Projděte si možné shromažďování vodoznaků, zkontrolujte a odstraňte vodoznaky
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. Uložte výsledný dokument pomocí metody uložení.
 watermarker.save("filepath/without_watermark.pdf");
 watermarker.close(); 

Existuje také několik dalších způsobů, jak najít a odstranit vodoznak z dokumentů pomocí různých metod. Pokud chcete odstranit všechny vodoznaky dokumentu nebo se chcete zbavit některých selektivních vodoznaků různého druhu:

  • Můžete sbírat všechny možné vodoznaky.
  • Iterujte sbírku vodoznaků nebo přímo přistupujte k vodoznaku pomocí indexu.
  • V případě potřeby zkontrolujte typ vodoznaku a údaje.
  • Odstraňte jej, pokud splňuje vaše požadavky.

remove, removeAt a clear jsou metody, které lze odpovídajícím způsobem použít k odstranění vodoznaků. Další podrobnosti najdete v článku dokumentace o vyhledávání a úpravě vodoznaků v Java.

Kompletní kód

// Najděte a odstraňte vodoznaky z dokumentů PDF, Word, Excel, PowerPoint a Visio v Java
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf"); // Provide any supported document

// Nakonfigurujte vyhledávací kritérium pro vodoznak obrázku
ImageSearchCriteria imageSearchCriteria = new ImageDctHashSearchCriteria("filepath/watermark.png");
imageSearchCriteria.setMaxDifference(0.2); // Set how much the watermark can differ from the provided image.

// Nakonfigurujte vyhledávací kritérium pro textový vodoznak
TextSearchCriteria textSearchCriteria = new TextSearchCriteria("CONFIDENTIAL");

// Kombinace kritérií vyhledávání textu a obrázků
SearchCriteria combinedSearchCriteria = imageSearchCriteria.or(textSearchCriteria);
PossibleWatermarkCollection possibleWatermarks = watermarker.search(combinedSearchCriteria);

//Projděte si možné shromažďování vodoznaků, zkontrolujte a odstraňte vodoznaky
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(); 

Výsledek

Následuje snímek obrazovky výsledného dokumentu PDF, který získáme po odstranění vodoznaků.

Výsledný soubor PDF po odstranění vodoznaků pomocí Watermarking Java API od GroupDocs

Závěr

Věřím, že jako vývojář Java již nebudete váhat s hledáním a následným odstraněním jakéhokoli druhu vodoznaku z dokumentů, tabulek, prezentací, dokumentů PDF a kreseb Visio podporovaných Microsoftem a OpenOffice.

Více o API můžete prozkoumat v dokumentaci. V případě jakýchkoliv dotazů nás kontaktujte @ forum.

Viz také