บทความนี้มีประโยชน์สำหรับนักพัฒนา 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 ต่อไปนี้ซึ่งมีลายน้ำที่เป็นข้อความและลายน้ำรูปภาพ เราจะใช้เอกสารนี้และลบลายน้ำออก
-
สร้างโครงการใหม่
-
เพิ่มการนำเข้าต่อไปนี้
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.");
}
}
- บันทึกเอกสารผลลัพธ์โดยใช้วิธีการบันทึก
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 ผลลัพธ์ที่เราได้รับหลังจากลบลายน้ำออก
บทสรุป
ฉันเชื่อว่าในฐานะนักพัฒนา Java คุณจะไม่ลังเลอีกต่อไปที่จะค้นหาและลบลายน้ำใดๆ ออกจากเอกสารประมวลผลคำ สเปรดชีต งานนำเสนอ เอกสาร PDF และภาพวาด Visio ที่ Microsoft และ OpenOffice รองรับอีกต่อไป
คุณสามารถศึกษาเพิ่มเติมเกี่ยวกับ API ได้จาก เอกสารประกอบ ในกรณีที่มีข้อสงสัย ติดต่อเรา @ ฟอรัม