Dzisiaj przyjrzymy się, jak znaleźć i usunąć znaki wodne z dokumentów w języku C#. W dokumencie mogą znajdować się tekstowe i graficzne znaki wodne. Możemy łatwo wyszukiwać i programowo usuwać takie znaki wodne z wielu obsługiwanych dokumentów PDF, Word, Excel, PowerPoint i Visio.

W tym artykule zostaną omówione następujące tematy:

Znajdź i usuń znaki wodne z dokumentów za pomocą GroupDocs API

Interfejs API platformy .NET do usuwania znaku wodnego

Interfejs API znaku wodnego dla platformy .NET — GroupDocs

GroupDocs.Watermark for .NET to szybki i wydajny interfejs API do znakowania wodnego, który nie wymaga dodatkowego oprogramowania. Umożliwia dodawanie znaków wodnych do dokumentów i obrazów w sposób, który byłby trudny do usunięcia przez narzędzia innych firm. Pozwala również programistom języka C# łatwo usuwać znaki wodne z wielu formatów plików Microsoft i OpenOffice w dokumentach edytorów tekstu, arkuszach kalkulacyjnych, prezentacjach, rysunkach programu Visio i dokumentach PDF w aplikacjach .NET. Wszystkie obsługiwane formaty plików są wymienione w dokumentacji.

Teraz pokażę przykłady wyszukiwania i usuwania znaków wodnych. Dlatego lepiej będzie, jeśli wcześniej przygotujesz środowisko, postępując zgodnie z jedną z odpowiednich opcji:

PM> Install-Package GroupDocs.Watermark

Znajdź znaki wodne w dokumentach za pomocą C#

Watermarker, PossibleWatermarkCollection(kolekcja PossibleWatermark to klasy API służące do znajdowania różnego rodzaju znaków wodnych w dokumentach z różnymi kryteriami wyszukiwania i szybkiego ich usuwania. Poniżej przedstawiono kroki do podstawowego wyszukiwania wszystkich znaków wodnych w dowolnym dostarczonym dokumencie przy użyciu języka C#.Można dodatkowo uściślić wyszukiwanie znaków wodnych, co pokazano w dalszej części tego artykułu.

  • Utwórz obiekt klasy Watermarker z plikiem dokumentu źródłowego.
  • Wywołaj metodę wyszukiwania. Zwróci wszystkie możliwe znaki wodne z dokumentu.
  • Przeglądaj kolekcję znaków wodnych, aby wyświetlić dane lub wykonać dowolne działanie na każdym znaku wodnym.
// Znajdź wszystkie znaki wodne w dokumentach Word, Excel, PowerPoint, Visio i PDF za pomocą języka 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);
    }
}

Usuń znaki wodne z dokumentów w C#

Ze wszystkich wyszukiwanych znaków wodnych możemy usunąć dowolny znak wodny lub wszystkie znaki wodne jednocześnie. Najważniejsze tutaj, czy udało Ci się znaleźć znak wodny, który chcesz usunąć, czy nie. Co zrobić, jeśli w dokumencie znajduje się wiele różnych typów znaków wodnych? Interfejs API udostępnia różne opcje udoskonalania wyszukiwania znaków wodnych. Poniższy kod usuwa znak wodny z dokumentu PDF, określając indeks kolekcji przy użyciu języka C#.

// Usuń znaki wodne z plików PDF i innych dokumentów za pomocą języka C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Usuń znak wodny w określonym indeksie z dokumentu.
    possibleWatermarks.RemoveAt(0);

    // Usuń określony znak wodny z dokumentu.
    possibleWatermarks.Remove(possibleWatermarks[0]);

    watermarker.Save("filepath/noWatermarks.pdf");
}

Więcej kryteriów wyszukiwania znaków wodnych

Istnieje wiele innych sposobów wyszukiwania znaków wodnych według określonych kryteriów. Po wyszukiwaniu selektywnym możemy usunąć znak(i) wodny(e) z kolekcji za pomocą odpowiednio metody Remove, RemoveAt lub Clear. Oto kilka sposobów wyszukiwania znaków wodnych w dostarczonych dokumentach:

  • Znajdź i usuń znaki wodne z określonym tekstem
  • Wyszukaj znaki wodne za pomocą RegEx (wyrażenie regularne) i usuń
  • Wyszukaj znak wodny z określonym formatowaniem tekstu
  • Znajdź i usuń znaki wodne hiperłączy

Znajdź i usuń znaki wodne z określonym tekstem

Możesz wyszukiwać tekstowe znaki wodne, określając dokładny ciąg przy użyciu następującego kodu C#:

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

Wyszukaj znaki wodne za pomocą RegEx i usuń

Jeśli w tekście znaku wodnego występuje jakiś wzorzec, możesz podać wyrażenie regularne (RegEx), aby wyszukać te znaki wodne i później odpowiednio je usunąć, używając następującego kodu C#. Ten kod pobierze wszystkie znaki wodne z ©YYYY.

// Search Watermarks by Regular Expression
Regex regex = new Regex(@"^© \\d{4}$");
TextSearchCriteria textSearchCriterion = new TextSearchCriteria(regex);
PossibleWatermarkCollection possibleWatermarks = watermarker.Search(textSearchCriterion);

Znajdź i usuń znaki wodne z określonym formatowaniem tekstu

Możesz również znaleźć znaki wodne mające określone formatowanie tekstu, takie jak nazwa czcionki, minimalny / maksymalny rozmiar czcionki, pogrubienie / kursywa / podkreślenie itp.

TextFormattingSearchCriteria criterion = new TextFormattingSearchCriteria()
{
    FontName = "Arial",
    MinFontSize = 19,
    MaxFontSize = 42,
    FontBold = true
};
PossibleWatermarkCollection watermarks = watermarker.Search(criterion);
watermarks.Clear();

Znajdź i usuń znaki wodne hiperłączy

Możesz użyć RegEx, aby znaleźć tekstowe znaki wodne zawierające hiperłącza w treści. Później możesz sprawdzić w kolekcji, czy w wyniku wyszukiwania znajdują się znaki wodne hiperłączy. Można je usunąć za pomocą dowolnej metody usuwania. Poniższy kod C# usuwa wszystkie znaki wodne z hiperłączami.

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);
    }
}

Istnieje wiele innych sposobów udoskonalenia wyszukaj znaki wodne. Możesz odwiedzić dokumentację, aby uzyskać więcej informacji. W przypadku pytań odwiedź forum.

Wniosek

Wierzę, że teraz będziesz mieć większą pewność w znajdowaniu i usuwaniu tekstowych znaków wodnych, a także graficznych znaków wodnych z dokumentów Word, arkuszy kalkulacyjnych Excel, prezentacji Powerpoint, dokumentów PDF i rysunków Visio przy użyciu języka C# w aplikacjach .NET.

Zobacz też