Hoje, veremos como localizar e remover marcas d’água de documentos em C#. Pode haver marcas d’água baseadas em texto e imagem em um documento. Podemos facilmente pesquisar e remover programaticamente essas marcas d’água de muitos documentos compatíveis com PDF, Word, Excel, PowerPoint e Visio.

Os seguintes tópicos serão abordados neste artigo:

Localizar e remover marcas d'água de documentos usando a API GroupDocs

API .NET para remoção de marca d’água

API de marca d'água para .NET - GroupDocs

GroupDocs.Watermark for .NET é uma API de marca d’água rápida e eficiente que não requer software adicional. Ele permite adicionar marcas d’água a documentos e imagens de uma maneira que seria difícil para ferramentas de terceiros removerem. Ele também permite que os desenvolvedores C# removam facilmente marcas d’água de muitos formatos de arquivo Microsoft e OpenOffice de documentos de processamento de texto, planilhas, apresentações, *desenhos do Visio * e documentos PDF em aplicativos .NET. Todos os formatos de arquivo suportados são mencionados na documentação.

Agora, mostrarei exemplos que encontrarão e removerão marcas d’água. Portanto, será melhor se você preparar o ambiente com antecedência, seguindo qualquer uma das opções adequadas:

PM> Install-Package GroupDocs.Watermark

Encontrar marcas d’água em documentos usando C#

Watermarker, PossibleWatermarkCollection (a coleção de PossibleWatermark são as classes da API para encontrar vários tipos de marcas d’água em documentos com vários critérios de pesquisa e removê-los rapidamente. Seguem os passos para a pesquisa básica de todas as marcas d’água em qualquer documento fornecido usando C#. Você pode refinar ainda mais sua pesquisa de marcas d’água e isso é mostrado mais adiante neste artigo.

  • Crie o objeto de classe Watermarker com o arquivo de documento de origem.
  • Chame o método Pesquisar. Ele retornará todas as marcas d’água possíveis do documento.
  • Percorra a coleção de marcas d’água para exibir dados ou executar qualquer ação em cada marca d’água.
// Encontre todas as marcas d'água em documentos do 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);
    }
}

Remover marcas d’água de documentos em c#

De todas as marcas d’água pesquisadas, podemos remover qualquer marca d’água ou todas as marcas d’água de uma só vez. O principal aqui, se você encontrou com sucesso as marcas d’água que deseja excluir ou não. E se houver muitos tipos diferentes de marcas d’água em um documento? A API oferece várias opções para refinar sua pesquisa por marcas d’água. O código a seguir remove a marca d’água de um documento PDF especificando o índice da coleção usando C#.

// Remova as marcas d'água de PDF e outros documentos usando C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Remova a marca d'água no índice especificado do documento.
    possibleWatermarks.RemoveAt(0);

    // Remova a marca d'água especificada do documento.
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

Mais critérios de pesquisa para marcas d’água

Existem muitas outras maneiras de encontrar marcas d’água com determinados critérios. Após a pesquisa seletiva, podemos remover as marcas d’água da coleção usando o método Remove, RemoveAt ou Clear de acordo. Aqui estão algumas das maneiras de encontrar marcas d’água nos documentos fornecidos:

  • Encontre e remova marcas d’água com texto específico
  • Pesquise marcas d’água com RegEx (Expressão Regular) e remova
  • Pesquisar marca d’água com formatação de texto especificada
  • Encontre e remova marcas d’água de hiperlink

Localizar e remover marcas d’água com texto específico

Você pode pesquisar marcas d’água de texto especificando a string exata usando o seguinte código C#:

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

Pesquise marcas d’água com RegEx e remova

Se houver algum padrão no texto da marca d’água, você poderá fornecer uma expressão regular (RegEx) para pesquisar essas marcas d’água e removê-las posteriormente usando o código C# a seguir. Este código irá buscar todas as marcas d’água com ©YYYY.

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

Localizar e remover marcas d’água com formatação de texto específica

Você também pode encontrar as marcas d’água com alguma formatação de texto específica, como nome da fonte, tamanho mínimo/máximo da fonte, negrito/itálico/sublinhado, etc.

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

Você pode usar o RegEx para encontrar marcas d’água de texto com hiperlinks no conteúdo. Mais tarde, você pode verificar na coleção se há marcas d’água de hiperlink no resultado da pesquisa. Estes podem ser removidos por qualquer um dos métodos de remoção. O código C# a seguir remove todas as marcas d’água com hiperlinks.

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

Há muitas outras maneiras de refinar sua pesquisa por marcas d’água. Você pode visitar documentação para mais detalhes. Para consultas, visite o fórum.

Conclusão

Acredito que agora você ficará mais confiante em localizar e remover marcas d’água de texto, bem como marcas d’água de imagem de documentos do Word, planilhas do Excel, apresentações do Powerpoint, documentos PDF e desenhos do Visio usando C# em seus aplicativos .NET.

Veja também