این مقاله برای توسعه دهندگان Java که به دنبال راهی برای یافتن و حذف واترمارک متن یا تصویر از اسناد PDF، Word، Excel، PowerPoint و Visio هستند مفید است. در یکی از پست‌هایمان پیدا کردن و حذف واترمارک از اسناد در سی شارپ را یاد گرفتیم. اکنون بیایید به سرعت کمی در مورد یک Java API ببینیم که امکان افزودن، یافتن و حذف واترمارک ها را از اسناد مختلف به روش های مختلف فراهم می کند.

Java API برای واترمارکینگ و حذف

GroupDocs.Watermark for Java API از افزودن واترمارک متن و تصویر به طیف وسیعی از قالب‌های سند پشتیبانی می‌کند. علاوه بر این، قابلیت یافتن و حذف واترمارک از اسناد را نیز دارد. API همچنین اشیاء واترمارکی که با استفاده از ابزارهای شخص ثالث اضافه شده اند را پیدا می کند. بنابراین اجازه دهید نشان دهم که چگونه می توانید واترمارک را از یک سند در چند مرحله در Java حذف کنید.

می‌توانید JAR را از بخش دانلودها دریافت کنید، یا پیکربندی زیر را در pom.xml برنامه Java مبتنی بر Maven خود اضافه کنید. برای جزئیات API، به API Reference مراجعه کنید.

<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>

مراحل حذف واترمارک از یک سند در جاوا

قبل از شروع، به سند 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. سند حاصل را با استفاده از روش ذخیره ذخیره کنید.
 watermarker.save("filepath/without_watermark.pdf");
 watermarker.close(); 

همچنین راه های دیگری برای یافتن و حذف واترمارک از اسناد با استفاده از روش های مختلف وجود دارد. اگر می خواهید تمام واترمارک های یک سند را حذف کنید یا می خواهید از شر برخی از واترمارک های انتخابی از انواع مختلف خلاص شوید:

  • شما می توانید تمام واترمارک های ممکن را جمع آوری کنید.
  • روی مجموعه واترمارک تکرار کنید یا مستقیماً با فهرست به واترمارک دسترسی پیدا کنید.
  • در صورت لزوم، نوع واترمارک و داده ها را بررسی کنید.
  • اگر نیاز شما را برآورده می کند، آن را حذف کنید.

remove، removeAt و clear روش هایی هستند که می توانند بر این اساس برای حذف واترمارک استفاده شوند. برای جزئیات بیشتر، می‌توانید از مقاله مستندسازی درباره جستجو و اصلاح واترمارک در جاوا دیدن کنید.

کد کامل

// یافتن و حذف واترمارک از اسناد 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 حاصل پس از حذف واترمارک ها با استفاده از Watermarking Java API توسط GroupDocs

نتیجه

من معتقدم، به عنوان یک توسعه‌دهنده جاوا، دیگر در یافتن و سپس حذف هر نوع واترمارک از اسناد پردازش کلمه، صفحات گسترده، ارائه‌ها، اسناد PDF و نقشه‌های Visio که مایکروسافت و OpenOffice پشتیبانی می‌شوند، تردید نخواهید داشت.

می‌توانید اطلاعات بیشتری درباره API از [اسناد] کاوش کنید. در صورت هر گونه سوال، با ما تماس بگیرید @ forum.

همچنین ببینید