本文對正在尋找從 PDF、Word、Excel、PowerPoint 和 Visio 文檔中查找和刪除文本或圖像水印的方法的 Java 開發人員很有用。在我們的一篇博文中,我們學習了使用 C# 從文檔中查找和刪除水印。現在讓我們快速了解一下 Java API,它允許以不同的方式在各種文檔中添加、查找和刪除水印。

用於水印和去除的 Java API

GroupDocs.Watermark for Java API 支持向多種文檔格式添加文本和圖像水印。此外,它還具有從文檔中查找和刪除水印的功能。 API 還會查找使用第三方工具添加的水印對象。因此,讓我演示如何在 Java 中通過幾個步驟從文檔中刪除水印。

您可以從 downloads 部分獲取 JAR,或者在基於 Maven 的 Java 應用程序的 pom.xml 中添加以下配置。有關 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;
  1. 創建 Watermarker 類的實例並加載源文檔。
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
  1. 使用搜索方法根據配置的搜索條件查找水印。
// 配置圖像水印的搜索條件
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);
  1. 遍歷水印集合併使用 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.");
	}
} 
  1. 使用 save 方法保存生成的文檔。
 watermarker.save("filepath/without_watermark.pdf");
 watermarker.close(); 

還有一些其他方法可以使用不同的方法從文檔中查找和刪除水印。如果你想去除文檔的所有水印,或者想要去除一些選擇性的各種水印:

  • 您可以收集所有可能的水印。
  • 遍歷水印集合或直接使用索引訪問水印。
  • 如果需要,檢查水印類型和數據。
  • 刪除它,如果它符合您的要求。

remove、removeAt 和 clear 是可相應用於刪除水印的方法。有關更多詳細信息,您可以訪問有關 在 Java 中搜索和修改水印 的文檔文章。

完整代碼

// 在 Java 中查找和刪除 PDF、Word、Excel、PowerPoint 和 Visio 文檔中的水印
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文檔的截圖。

GroupDocs 使用 Watermarking Java API 去除水印後生成的 PDF 文件

結論

我相信,作為一名 Java 開發人員,您會毫不猶豫地從 Microsoft 和 OpenOffice 支持的文字處理文檔、電子表格、演示文稿、PDF 文檔和 Visio 繪圖中查找並刪除任何類型的水印。

您可以從 文檔 中探索更多關於 API 的信息。如有任何疑問,請聯繫我們@forum

也可以看看