บทความนี้มีประโยชน์สำหรับนักพัฒนา Java ที่กำลังมองหาวิธีค้นหาและลบลายน้ำข้อความหรือรูปภาพออกจากเอกสาร PDF, Word, Excel, PowerPoint และ Visio ในโพสต์หนึ่งของเรา เราได้เรียนรู้ การค้นหาและลบลายน้ำออกจากเอกสารใน C# ตอนนี้ข้ามไปดูอย่างรวดเร็วเกี่ยวกับ Java API ที่อนุญาตให้เพิ่ม ค้นหา และลบลายน้ำจากเอกสารต่างๆ ด้วยวิธีต่างๆ

Java API สำหรับลายน้ำและการลบ

GroupDocs.Watermark for Java API รองรับการเพิ่มข้อความและลายน้ำรูปภาพในเอกสารรูปแบบต่างๆ นอกจากนี้ยังมีความสามารถในการค้นหาและลบลายน้ำออกจากเอกสาร API ยังค้นหาวัตถุลายน้ำที่เพิ่มโดยใช้เครื่องมือของบุคคลที่สาม ให้ฉันสาธิตวิธีการลบลายน้ำออกจากเอกสารในไม่กี่ขั้นตอนใน Java

คุณอาจได้รับ JAR จากส่วน ดาวน์โหลด หรือเพิ่มการกำหนดค่าต่อไปนี้ใน pom.xml ของแอปพลิเคชัน Java ที่ใช้ Maven สำหรับรายละเอียด 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. บันทึกเอกสารผลลัพธ์โดยใช้วิธีการบันทึก
 watermarker.save("filepath/without_watermark.pdf");
 watermarker.close(); 

นอกจากนี้ยังมีวิธีอื่นๆ ในการค้นหาและลบลายน้ำออกจากเอกสารโดยใช้วิธีการต่างๆ หากคุณต้องการลบลายน้ำทั้งหมดของเอกสาร หรือต้องการลบลายน้ำแบบต่างๆ บางส่วน:

  • คุณสามารถรวบรวมลายน้ำที่เป็นไปได้ทั้งหมด
  • ทำซ้ำการรวบรวมลายน้ำหรือเข้าถึงลายน้ำโดยตรงด้วยดัชนี
  • ตรวจสอบประเภทและข้อมูลลายน้ำ หากจำเป็น
  • ลบออกหากตรงกับความต้องการของคุณ

ลบ RemoveAt และล้างเป็นวิธีการที่สามารถใช้เพื่อลบลายน้ำ สำหรับรายละเอียดเพิ่มเติม คุณสามารถไปที่บทความเอกสารเกี่ยวกับ การค้นหาและแก้ไขลายน้ำใน Java

รหัสที่สมบูรณ์

// ค้นหาและลบลายน้ำออกจากเอกสาร PDF, Word, Excel, PowerPoint และ Visio ใน Java
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 ผลลัพธ์ที่เราได้รับหลังจากลบลายน้ำออก

ไฟล์ PDF ผลลัพธ์หลังจากลบลายน้ำโดยใช้ Watermarking Java API โดย GroupDocs

บทสรุป

ฉันเชื่อว่าในฐานะนักพัฒนา Java คุณจะไม่ลังเลอีกต่อไปที่จะค้นหาและลบลายน้ำใดๆ ออกจากเอกสารประมวลผลคำ สเปรดชีต งานนำเสนอ เอกสาร PDF และภาพวาด Visio ที่ Microsoft และ OpenOffice รองรับอีกต่อไป

คุณสามารถศึกษาเพิ่มเติมเกี่ยวกับ API ได้จาก เอกสารประกอบ ในกรณีที่มีข้อสงสัย ติดต่อเรา @ ฟอรัม

ดูสิ่งนี้ด้วย