היום, נסקור כיצד למצוא ולהסיר סימני מים ממסמכים ב-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 (ביטוי רגיל) והסר
  • חפש סימן מים עם עיצוב טקסט שצוין
  • מצא והסר סימני מים היפר-קישורים

מצא והסר סימני מים עם טקסט ספציפי

אתה יכול לחפש סימני מים של טקסט על ידי ציון המחרוזת המדויקת באמצעות קוד C# הבא:

 // Find possible watermarks containing the specified text
TextSearchCriteria textSearchCriterion = new TextSearchCriteria("© 2020");
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);

חפש סימני מים עם RegEx והסר

אם יש דפוס כלשהו בטקסט של סימן המים, אתה יכול לספק ביטוי רגולרי (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 שלך.

ראה גם