Hoy veremos cómo encontrar y eliminar marcas de agua de documentos en C#. Puede haber marcas de agua basadas en texto e imágenes en un documento. Podemos buscar fácilmente y eliminar dichas marcas de agua mediante programación de muchos documentos compatibles con PDF, Word, Excel, PowerPoint y Visio.

En este artículo se tratarán los siguientes temas:

Encuentre y elimine marcas de agua de documentos usando la API de GroupDocs

.NET API para la eliminación de marcas de agua

API de marca de agua para .NET - GroupDocs

GroupDocs.Watermark for .NET es una API de marca de agua rápida y eficiente que no requiere software adicional. Permite agregar marcas de agua a documentos e imágenes de tal manera que sería difícil de eliminar para las herramientas de terceros. También permite que los desarrolladores de C# eliminen fácilmente marcas de agua de muchos formatos de archivo de Microsoft y OpenOffice de documentos de procesamiento de texto, hojas de cálculo, presentaciones, *dibujos de Visio * y documentos PDF en aplicaciones .NET. Todos los formatos de archivo admitidos se mencionan en la documentación.

Ahora, mostraré ejemplos que encontrarán y eliminarán marcas de agua. Por lo tanto, será mejor que prepares el ambiente de antemano siguiendo alguna de las opciones adecuadas:

PM> Install-Package GroupDocs.Watermark

Encuentra marcas de agua en documentos usando C#

Watermarker, PossibleWatermarkCollection (la colección de PossibleWatermark son las clases de la API para encontrar varios tipos de marcas de agua en documentos con varios criterios de búsqueda y eliminarlos rápidamente. Los siguientes son los pasos para la búsqueda básica de todas las marcas de agua en cualquier documento provisto usando C#. Puede refinar aún más su búsqueda de marcas de agua y esto se muestra más adelante en este artículo.

  • Cree el objeto de clase Marcador de agua con el archivo del documento de origen.
  • Llame al método Buscar. Devolverá todas las posibles marcas de agua del documento.
  • Atraviese la colección de marcas de agua para mostrar datos o realizar cualquier acción en cada marca de agua.
// Encuentre todas las marcas de agua en documentos de Word, Excel, PowerPoint, Visio y 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);
    }
}

Eliminar marcas de agua de documentos en C#

De todas las marcas de agua buscadas, podemos eliminar cualquier marca de agua o todas las marcas de agua a la vez. Lo principal aquí, si ha encontrado con éxito las marcas de agua que desea eliminar o no. ¿Qué pasa si hay muchos tipos diferentes de marcas de agua en un documento? La API ofrece varias opciones para refinar su búsqueda de marcas de agua. El siguiente código elimina la marca de agua de un documento PDF especificando el índice de colección usando C#.

// Elimine las marcas de agua de PDF y otros documentos usando C#
using (Watermarker watermarker = new Watermarker("filepath/documentWithWatermarks.pdf"))
{
    PossibleWatermarkCollection possibleWatermarks = watermarker.Search();

    // Elimina la marca de agua en el índice especificado del documento.
    possibleWatermarks.RemoveAt(0);

    // Elimina la marca de agua especificada del documento.
    possibleWatermarks.Remove(possibleWatermarks[0]);

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

Más criterios de búsqueda para marcas de agua

Hay muchas otras formas de encontrar marcas de agua con ciertos criterios. Después de la búsqueda selectiva, podemos eliminar las marcas de agua de la colección usando el método Eliminar, Eliminar en o Borrar según corresponda. Estas son algunas de las formas de encontrar marcas de agua en los documentos proporcionados:

  • Encuentra y elimina marcas de agua con texto específico
  • Busque marcas de agua con RegEx (Expresión regular) y elimínelas
  • Buscar marca de agua con formato de texto especificado
  • Buscar y eliminar marcas de agua de hipervínculos

Buscar y eliminar marcas de agua con texto específico

Puede buscar marcas de agua de texto especificando la cadena exacta con el siguiente código C#:

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

Busque marcas de agua con RegEx y elimínelas

Si hay algún patrón en el texto de la marca de agua, puede proporcionar una expresión regular (RegEx) para buscar estas marcas de agua y puede eliminarlas más tarde según corresponda usando el siguiente código C#. Este código obtendrá todas las marcas de agua con ©YYYY.

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

Buscar y eliminar marcas de agua con formato de texto específico

También puede encontrar las marcas de agua que tienen algún formato de texto específico como nombre de fuente, tamaño de fuente mínimo/máximo, negrita/cursiva/subrayado, etc.

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

Buscar y eliminar marcas de agua de hipervínculo

Puede usar RegEx para encontrar marcas de agua de texto que tengan hipervínculos en el contenido. Más tarde, puede verificar en la colección si hay marcas de agua de hipervínculo en el resultado de la búsqueda. Estos pueden ser eliminados por cualquiera de los métodos de eliminación. El siguiente código C# elimina todas las marcas de agua con hipervínculos.

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

Hay muchas otras formas de refinar su búsqueda de marcas de agua. Puede visitar documentación para obtener más detalles. Para consultas, visite el foro.

Conclusión

Creo que ahora tendrá más confianza para encontrar y eliminar marcas de agua de texto y marcas de agua de imágenes de documentos de Word, hojas de cálculo de Excel, presentaciones de Powerpoint, documentos PDF y dibujos de Visio usando C# dentro de sus aplicaciones .NET.

Ver también