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

หัวข้อต่อไปนี้จะกล่าวถึงในบทความนี้:

ค้นหาและลบลายน้ำออกจากเอกสารโดยใช้ GroupDocs API

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

Watermark API สำหรับ .NET - GroupDocs

GroupDocs.Watermark for .NET เป็น API ลายน้ำที่รวดเร็วและมีประสิทธิภาพซึ่งไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม อนุญาตให้เพิ่มลายน้ำในเอกสารและรูปภาพในลักษณะที่ยากสำหรับเครื่องมือของบุคคลที่สามในการลบ นอกจากนี้ยังช่วยให้นักพัฒนา C# ลบลายน้ำออกจากรูปแบบไฟล์ Microsoft และ OpenOffice ของเอกสารประมวลผลคำ สเปรดชีต งานนำเสนอ ภาพวาด Visio และเอกสาร PDF ในแอปพลิเคชัน .NET ได้อย่างง่ายดาย รูปแบบไฟล์ที่รองรับ ทั้งหมดได้กล่าวถึงใน เอกสารประกอบ

ตอนนี้ฉันจะแสดงตัวอย่างที่จะค้นหาและลบลายน้ำ ดังนั้น จะเป็นการดีกว่าถ้าคุณเตรียมสภาพแวดล้อมล่วงหน้าโดยทำตามตัวเลือกที่เหมาะสม:

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 ของคุณ

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