本文對正在尋找從 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 文檔。我們將使用此文檔並從中刪除水印。
-
創建一個新項目。
-
添加以下導入。
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;
- 創建 Watermarker 類的實例並加載源文檔。
Watermarker watermarker = new Watermarker("filepath/watermarked.pdf");
- 使用搜索方法根據配置的搜索條件查找水印。
// 配置圖像水印的搜索條件
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);
- 遍歷水印集合併使用 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.");
}
}
- 使用 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文檔的截圖。
結論
我相信,作為一名 Java 開發人員,您會毫不猶豫地從 Microsoft 和 OpenOffice 支持的文字處理文檔、電子表格、演示文稿、PDF 文檔和 Visio 繪圖中查找並刪除任何類型的水印。
您可以從 文檔 中探索更多關於 API 的信息。如有任何疑問,請聯繫我們@forum。