Сьогодні ми розглянемо, як знайти та видалити водяні знаки з документів у C#. У документі можуть бути водяні знаки на основі тексту та зображення. Ми можемо легко шукати та програмно видаляти такі водяні знаки з багатьох документів, що підтримуються PDF, Word, Excel, PowerPoint і Visio.

У цій статті будуть розглянуті такі теми:

Знайдіть і видаліть водяні знаки з документів за допомогою GroupDocs API

.NET API для видалення водяних знаків

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.

Дивись також