Oggi daremo un’occhiata a come trovare e rimuovere filigrane dai documenti in C#. In un documento possono essere presenti filigrane basate su testo e immagini. Possiamo facilmente cercare e rimuovere a livello di codice tali filigrane da molti documenti supportati da PDF, Word, Excel, PowerPoint e Visio.

I seguenti argomenti saranno trattati in questo articolo:

Trova e rimuovi filigrane dai documenti utilizzando l'API GroupDocs

API .NET per la rimozione della filigrana

API filigrana per .NET - GroupDocs

GroupDocs.Watermark for .NET è un’API di filigrana veloce ed efficiente che non richiede software aggiuntivo. Consente di aggiungere filigrane a documenti e immagini in modo tale che sarebbe difficile da rimuovere per strumenti di terze parti. Consente inoltre agli sviluppatori C# di rimuovere facilmente le filigrane da molti formati di file Microsoft e OpenOffice di documenti di elaborazione testi, fogli di calcolo, presentazioni, *disegni di Visio * e PDF nelle applicazioni .NET. Tutti i formati di file supportati sono menzionati nella documentazione.

Ora mostrerò esempi che troveranno e rimuoveranno le filigrane. Quindi, sarà meglio se prepari l’ambiente in anticipo seguendo una delle opzioni adatte:

PM> Install-Package GroupDocs.Watermark

Trova filigrane nei documenti usando C#

Watermarker, PossibleWatermarkCollection (la raccolta di PossibleWatermark sono le classi dell’API per trovare vari tipi di filigrane nei documenti con vari criteri di ricerca e rimuoverli rapidamente. Di seguito sono riportati i passaggi per la ricerca di base di tutte le filigrane in qualsiasi documento fornito utilizzando C#. È possibile perfezionare ulteriormente la ricerca delle filigrane e ciò verrà illustrato più avanti in questo articolo.

  • Crea l’oggetto classe Watermarker con il file del documento di origine.
  • Chiama il metodo Cerca. Restituirà tutte le possibili filigrane dal documento.
  • Attraversa la raccolta di filigrane per visualizzare i dati o eseguire qualsiasi azione su ciascuna filigrana.
// Trova tutte le filigrane nei documenti Word, Excel, PowerPoint, Visio e PDF usando 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);
    }
}

Rimuovere le filigrane dai documenti in C#

Da tutte le filigrane cercate, possiamo rimuovere qualsiasi filigrana o tutte le filigrane contemporaneamente. La cosa principale qui, se hai trovato con successo le filigrane che desideri eliminare o meno. Cosa succede se in un documento sono presenti molti tipi diversi di filigrane? L’API offre varie opzioni per perfezionare la ricerca di filigrane. Il codice seguente rimuove la filigrana da un documento PDF specificando l’indice di raccolta usando C#.

// Rimuovi le filigrane da PDF e altri documenti usando C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Rimuovere la filigrana in corrispondenza dell'indice specificato dal documento.
    possibleWatermarks.RemoveAt(0);

    // Rimuovere la filigrana specificata dal documento.
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

Altri criteri di ricerca per filigrane

Esistono molti altri modi per trovare filigrane con determinati criteri. Dopo la ricerca selettiva, possiamo rimuovere le filigrane dalla raccolta utilizzando il metodo Rimuovi, RimuoviAt o Cancella di conseguenza. Ecco alcuni dei modi per trovare filigrane dai documenti forniti:

  • Trova e rimuovi filigrane con testo specifico
  • Cerca filigrane con RegEx (espressione regolare) e rimuovi
  • Cerca filigrana con la formattazione del testo specificata
  • Trova e rimuovi filigrane di collegamenti ipertestuali

Trova e rimuovi filigrane con testo specifico

È possibile cercare filigrane di testo specificando la stringa esatta utilizzando il seguente codice C#:

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

Cerca filigrane con RegEx e rimuovi

Se è presente un modello nel testo della filigrana, è possibile fornire un’espressione regolare (RegEx) per cercare queste filigrane e rimuoverle in seguito di conseguenza utilizzando il codice C# seguente. Questo codice recupererà tutte le filigrane con ©YYYY.

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

Trova e rimuovi filigrane con formattazione del testo specifica

Puoi anche trovare le filigrane con una formattazione del testo specifica come il nome del carattere, la dimensione minima/massima del carattere, il grassetto/corsivo/sottolineato, ecc.

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

Trova e rimuovi filigrane di collegamenti ipertestuali

È possibile utilizzare RegEx per trovare filigrane di testo con collegamenti ipertestuali nel contenuto. Successivamente puoi controllare nella raccolta se sono presenti filigrane di collegamenti ipertestuali nel risultato della ricerca. Questi possono essere rimossi con uno qualsiasi dei metodi di rimozione. Il codice C# seguente rimuove tutte le filigrane con collegamenti ipertestuali.

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

Esistono molti altri modi per perfezionare la tua ricerca di filigrane. Puoi visitare la documentazione per maggiori dettagli. Per domande, visita il forum.

Conclusione

Credo che ora sarai più sicuro nel trovare e rimuovere filigrane di testo e filigrane di immagini da documenti Word, fogli di calcolo Excel, presentazioni Powerpoint, documenti PDF e disegni Visio utilizzando C# all’interno delle tue applicazioni .NET.

Guarda anche