Сегодня мы рассмотрим как найти и удалить водяные знаки из документов на C#. В документе могут быть текстовые и графические водяные знаки. Мы можем легко найти и программно удалить такие водяные знаки из многих документов, поддерживаемых PDF, Word, Excel, PowerPoint и Visio.

В этой статье будут затронуты следующие темы:

Поиск и удаление водяных знаков из документов с помощью API GroupDocs

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

API водяных знаков для .NET — GroupDocs

GroupDocs.Watermark for .NET — это быстрый и эффективный API для создания водяных знаков, не требующий дополнительного программного обеспечения. Это позволяет добавлять водяные знаки к документам и изображениям таким образом, чтобы сторонние инструменты не могли их удалить. Он также позволяет разработчикам C# легко удалять водяные знаки из многих форматов файлов Microsoft и OpenOffice текстовых документов, электронных таблиц, презентаций, *рисунков Visio. * и документы PDF в приложениях .NET. Все поддерживаемые форматы файлов указаны в документации.

Теперь я покажу примеры, которые будут находить и удалять водяные знаки. Итак, будет лучше, если вы заранее подготовите окружение, выполнив любой из подходящих вариантов:

PM> Install-Package GroupDocs.Watermark

Поиск водяных знаков в документах с помощью C#

Водяной знак, 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 и других документов с помощью С#
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.

Смотрите также