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

.NET API สำหรับการลบลายน้ำ

GroupDocs.Watermark for .NET เป็น API ลายน้ำที่รวดเร็วและมีประสิทธิภาพซึ่งไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม อนุญาตให้เพิ่มลายน้ำในเอกสารและรูปภาพในลักษณะที่ยากสำหรับเครื่องมือของบุคคลที่สามในการลบ นอกจากนี้ยังช่วยให้นักพัฒนา C# ลบลายน้ำออกจากรูปแบบไฟล์ Microsoft และ OpenOffice ของเอกสารประมวลผลคำ สเปรดชีต งานนำเสนอ ภาพวาด Visio และเอกสาร PDF ในแอปพลิเคชัน .NET ได้อย่างง่ายดาย รูปแบบไฟล์ที่รองรับ ทั้งหมดได้กล่าวถึงใน เอกสารประกอบ
ตอนนี้ฉันจะแสดงตัวอย่างที่จะค้นหาและลบลายน้ำ ดังนั้น จะเป็นการดีกว่าถ้าคุณเตรียมสภาพแวดล้อมล่วงหน้าโดยทำตามตัวเลือกที่เหมาะสม:
- นูเก็ท
- Direct Download: MSI installer and DLLs
- คอนโซลตัวจัดการแพ็คเกจ:
PM> Install-Package GroupDocs.Watermark
ค้นหาลายน้ำในเอกสารโดยใช้ C#
Watermarker, PossibleWatermarkCollection(คอลเลกชันของ PossibleWatermark คือคลาสของ API เพื่อค้นหาลายน้ำประเภทต่างๆ ในเอกสารด้วยเกณฑ์การค้นหาต่างๆ และลบออกอย่างรวดเร็ว ขั้นตอนต่อไปนี้ สำหรับการค้นหาลายน้ำพื้นฐานทั้งหมดในเอกสารที่มีให้โดยใช้ C# คุณสามารถปรับแต่งการค้นหาลายน้ำเพิ่มเติมได้และจะแสดงในภายหลังในบทความนี้
- สร้างวัตถุคลาส Watermarker ด้วยไฟล์เอกสารต้นฉบับ
- เรียกวิธีการค้นหา มันจะส่งคืนลายน้ำที่เป็นไปได้ทั้งหมดจากเอกสาร
- สำรวจการรวบรวมลายน้ำเพื่อแสดงข้อมูลหรือดำเนินการใดๆ กับลายน้ำแต่ละรายการ
// ค้นหาลายน้ำทั้งหมดในเอกสาร Word, Excel, PowerPoint, Visio และ PDF โดยใช้ C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
PossibleWatermarkCollection possibleWatermarks = watermarker.Search();
foreach (PossibleWatermark possibleWatermark in possibleWatermarks)
{
if (possibleWatermark.ImageData != null)
{
Console.WriteLine(possibleWatermark.ImageData.Length);
}
Console.WriteLine(possibleWatermark.Text);
Console.WriteLine(possibleWatermark.X);
Console.WriteLine(possibleWatermark.Y);
Console.WriteLine(possibleWatermark.RotateAngle);
Console.WriteLine(possibleWatermark.Width);
Console.WriteLine(possibleWatermark.Height);
}
}
ลบลายน้ำออกจากเอกสารใน C#
จากลายน้ำที่ค้นหาทั้งหมด เราสามารถลบลายน้ำใด ๆ หรือลายน้ำทั้งหมดได้ในครั้งเดียว สิ่งสำคัญที่นี่ ไม่ว่าคุณจะพบลายน้ำที่คุณต้องการลบสำเร็จหรือไม่ จะเกิดอะไรขึ้นหากมีลายน้ำหลายประเภทในเอกสาร API ให้ตัวเลือกต่างๆ เพื่อปรับแต่งการค้นหาลายน้ำของคุณ รหัสต่อไปนี้จะลบลายน้ำออกจากเอกสาร PDF โดยระบุดัชนีการรวบรวมโดยใช้ C#
// ลบลายน้ำออกจาก PDF และเอกสารอื่น ๆ โดยใช้ C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
PossibleWatermarkCollection possibleWatermarks = watermarker.Search();
// ลบลายน้ำที่ดัชนีที่ระบุออกจากเอกสาร
possibleWatermarks.RemoveAt(0);
// ลบลายน้ำที่ระบุออกจากเอกสาร
possibleWatermarks.Remove(possibleWatermarks[0]);
watermarker.Save("filepath/noWatermarks.pdf");
}
เกณฑ์การค้นหาเพิ่มเติมสำหรับลายน้ำ
มีวิธีอื่นอีกมากมายในการค้นหาลายน้ำด้วยเกณฑ์ที่แน่นอน หลังจากการค้นหาแบบเลือก เราสามารถลบลายน้ำออกจากคอลเลกชันโดยใช้วิธีการ Remove, RemoveAt หรือ Clear ตามนั้น ต่อไปนี้เป็นวิธีค้นหาลายน้ำจากเอกสารที่ให้มา:
- ค้นหาและลบลายน้ำที่มีข้อความเฉพาะ
- ค้นหาลายน้ำด้วย RegEx (Regular Expression) และลบออก
- ค้นหาลายน้ำด้วยรูปแบบข้อความที่ระบุ
- ค้นหาและลบลายน้ำไฮเปอร์ลิงก์
ค้นหาและลบลายน้ำที่มีข้อความเฉพาะ
คุณสามารถค้นหาลายน้ำข้อความโดยระบุสตริงที่แน่นอนโดยใช้รหัส C# ต่อไปนี้:
// Find possible watermarks containing the specified text
TextSearchCriteria textSearchCriterion = new TextSearchCriteria("© 2020");
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);
ค้นหาลายน้ำด้วย RegEx และ Remove
หากมีรูปแบบบางอย่างในข้อความของลายน้ำ คุณสามารถใส่นิพจน์ทั่วไป (RegEx) เพื่อค้นหาลายน้ำเหล่านี้และลบออกในภายหลังได้โดยใช้โค้ด C# ต่อไปนี้ รหัสนี้จะดึงลายน้ำทั้งหมดที่มี ©YYYY
// Search Watermarks by Regular Expression
Regex regex = new Regex(@"^© \\d{4}$");
TextSearchCriteria textSearchCriterion = new TextSearchCriteria(regex);
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);
ค้นหาและลบลายน้ำด้วยการจัดรูปแบบข้อความเฉพาะ
คุณยังสามารถค้นหาลายน้ำที่มีรูปแบบข้อความเฉพาะ เช่น ชื่อฟอนต์ ขนาดฟอนต์ต่ำสุด/สูงสุด ตัวหนา/ตัวเอียง/ขีดเส้นใต้ เป็นต้น
TextFormattingSearchCriteria criterion = new TextFormattingSearchCriteria()
{
FontName = "Arial",
MinFontSize = 19,
MaxFontSize = 42,
FontBold = true
};
PossibleWatermarkCollection watermarks = watermarker.Search(criterion);
watermarks.Clear();
ค้นหาและลบลายน้ำไฮเปอร์ลิงก์
คุณสามารถใช้ RegEx เพื่อค้นหาลายน้ำข้อความที่มีไฮเปอร์ลิงก์ในเนื้อหา ภายหลังคุณสามารถตรวจสอบในคอลเลกชันว่ามีลายน้ำไฮเปอร์ลิงก์ในผลการค้นหาหรือไม่ สิ่งเหล่านี้สามารถลบออกได้ด้วยวิธีใดวิธีหนึ่งในการลบ รหัส C# ต่อไปนี้จะลบลายน้ำทั้งหมดที่มีการเชื่อมโยงหลายมิติ
PossibleWatermarkCollection watermarks = watermarker.Search(new TextSearchCriteria(new Regex(@"anyurl\\.com")));
for (int i = watermarks.Count - 1; i >= 0; i--)
{
// Is watermark the hyperlink?
if (watermarks\[i\] is HyperlinkPossibleWatermark)
{
watermarks.RemoveAt(i);
}
}
มีวิธีอื่นๆ อีกมากมายในการปรับแต่ง ค้นหาลายน้ำ ของคุณ คุณสามารถไปที่ เอกสารประกอบ สำหรับรายละเอียดเพิ่มเติม หากต้องการสอบถาม โปรดไปที่ ฟอรัม
บทสรุป
ฉันเชื่อว่าตอนนี้คุณจะมั่นใจมากขึ้นในการค้นหาและลบลายน้ำข้อความรวมถึงลายน้ำรูปภาพจากเอกสาร Word, สเปรดชีต Excel, งานนำเสนอ Powerpoint, เอกสาร PDF และภาพวาด Visio โดยใช้ C# ภายในแอปพลิเคชัน .NET ของคุณ