Heute sehen wir uns an, wie man Wasserzeichen aus Dokumenten in C# findet und entfernt. Ein Dokument kann text- und bildbasierte Wasserzeichen enthalten. Wir können solche Wasserzeichen problemlos aus vielen PDF-, Word-, Excel-, PowerPoint- und Visio-unterstützten Dokumenten suchen und programmgesteuert entfernen.

Folgende Themen werden in diesem Artikel behandelt:

Suchen und entfernen Sie Wasserzeichen aus Dokumenten mit der GroupDocs-API

.NET-API zum Entfernen von Wasserzeichen

Wasserzeichen-API für .NET – GroupDocs

GroupDocs.Watermark for .NET ist eine schnelle und effiziente Wasserzeichen-API, die keine zusätzliche Software erfordert. Es ermöglicht das Hinzufügen von Wasserzeichen zu Dokumenten und Bildern auf eine Weise, die für Tools von Drittanbietern schwer zu entfernen wäre. Außerdem können C#-Entwickler problemlos Wasserzeichen aus vielen Microsoft- und OpenOffice-Dateiformaten von Textverarbeitungsdokumenten, Tabellenkalkulationen, Präsentationen, *Visio-Zeichnungen entfernen. * und PDF-Dokumente in .NET-Anwendungen. Alle unterstützten Dateiformate sind in der Dokumentation erwähnt.

Jetzt werde ich Beispiele zeigen, die Wasserzeichen finden und entfernen. Es ist also besser, wenn Sie die Umgebung vorher vorbereiten, indem Sie eine der geeigneten Optionen befolgen:

PM> Install-Package GroupDocs.Watermark

Suchen Sie Wasserzeichen in Dokumenten mit C#

Watermarker, PossibleWatermarkCollection (die Sammlung von PossibleWatermark sind die Klassen der API, um verschiedene Arten von Wasserzeichen in Dokumenten mit verschiedenen Suchkriterien zu finden und sie schnell zu entfernen. Im Folgenden sind die Schritte aufgeführt für die einfache Suche nach allen Wasserzeichen in jedem bereitgestellten Dokument mit C# Sie können Ihre Suche nach Wasserzeichen weiter verfeinern, was später in diesem Artikel gezeigt wird.

  • Erstellen Sie das Klassenobjekt Watermarker mit der Quelldokumentdatei.
  • Rufen Sie die Methode Search auf. Es werden alle möglichen Wasserzeichen aus dem Dokument zurückgegeben.
  • Durchsuchen Sie die Wasserzeichensammlung, um Daten anzuzeigen oder Aktionen für jedes Wasserzeichen auszuführen.
// Finden Sie alle Wasserzeichen in Word-, Excel-, PowerPoint-, Visio- und PDF-Dokumenten mit 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);
    }
}

Wasserzeichen aus Dokumenten in C# entfernen

Aus allen gesuchten Wasserzeichen können wir jedes Wasserzeichen oder alle Wasserzeichen auf einmal entfernen. Die Hauptsache hierbei ist, ob Sie das/die zu löschende(n) Wasserzeichen erfolgreich gefunden haben oder nicht. Was ist, wenn ein Dokument viele verschiedene Arten von Wasserzeichen enthält? Die API bietet verschiedene Optionen, um Ihre Suche nach Wasserzeichen zu verfeinern. Der folgende Code entfernt das Wasserzeichen aus einem PDF-Dokument, indem der Index der Sammlung mit C# angegeben wird.

// Entfernen Sie die Wasserzeichen aus PDF- und anderen Dokumenten mit C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Wasserzeichen am angegebenen Index aus dem Dokument entfernen.
    possibleWatermarks.RemoveAt(0);

    // Angegebenes Wasserzeichen aus dem Dokument entfernen.
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

Weitere Suchkriterien für Wasserzeichen

Es gibt viele andere Möglichkeiten, Wasserzeichen mit bestimmten Kriterien zu finden. Nach der selektiven Suche können wir das/die Wasserzeichen aus der Sammlung entfernen, indem wir entsprechend die Methoden Remove, RemoveAt oder Clear verwenden. Hier sind einige der Möglichkeiten, Wasserzeichen in den bereitgestellten Dokumenten zu finden:

  • Suchen und entfernen Sie Wasserzeichen mit bestimmtem Text
  • Wasserzeichen mit RegEx (regulärer Ausdruck) suchen und entfernen
  • Suche nach Wasserzeichen mit angegebener Textformatierung
  • Suchen und entfernen Sie Hyperlink-Wasserzeichen

Suchen und entfernen Sie Wasserzeichen mit bestimmtem Text

Sie können nach Textwasserzeichen suchen, indem Sie die genaue Zeichenfolge mit dem folgenden C#-Code angeben:

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

Mit RegEx nach Wasserzeichen suchen und entfernen

Wenn der Text des Wasserzeichens ein Muster enthält, können Sie einen regulären Ausdruck (RegEx) bereitstellen, um nach diesen Wasserzeichen zu suchen, und sie später mit dem folgenden C#-Code entsprechend entfernen. Dieser Code ruft alle Wasserzeichen mit ©YYYY ab.

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

Wasserzeichen mit spezifischer Textformatierung finden und entfernen

Sie können auch Wasserzeichen mit bestimmten Textformatierungen finden, z. B. Schriftartname, minimale/maximale Schriftgröße, fett/kursiv/unterstrichen usw.

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

Sie können RegEx verwenden, um Textwasserzeichen mit Hyperlinks im Inhalt zu finden. Später können Sie in der Sammlung überprüfen, ob das Suchergebnis Hyperlink-Wasserzeichen enthält. Diese können mit einer der Entfernungsmethoden entfernt werden. Der folgende C#-Code entfernt alle Wasserzeichen mit Hyperlinks.

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

Es gibt viele andere Möglichkeiten, Ihre [Suche nach Wasserzeichen] zu verfeinern]12. Weitere Einzelheiten finden Sie unter Dokumentation. Besuchen Sie für Fragen das Forum.

Fazit

Ich glaube, dass Sie jetzt sicherer darin sind, Textwasserzeichen sowie Bildwasserzeichen aus Word-Dokumenten, Excel-Tabellen, Powerpoint-Präsentationen, PDF-Dokumenten und Visio-Zeichnungen mit C# in Ihren .NET-Anwendungen zu finden und zu entfernen.

Siehe auch