Cómo eliminar una página en blanco en Word usando C#

Cómo eliminar una página en blanco en Word usando C#

Este tutorial rápido explica cómo eliminar páginas vacías de los documentos de Word (DOCX, DOC, etc.) utilizando C#. El proceso implica cargar un archivo de Word, analizar páginas individuales, identificar páginas vacías, y finalmente crear un nuevo documento sin las páginas vacías.

Beneficios de eliminar páginas blancas en documentos de palabras

  • Documento de limpieza:- Mejora la lectura y la profesionalidad.

  • Dimensiones de archivo reducidos:- El almacenamiento eficiente eliminando páginas innecesarias.

  • Capacidad de automatización:- Ideal para la limpieza automática de grandes documentos.

Requisitos: Preparación del medio ambiente

  • Visual Studio o otro .NET IDE.
  • Aspose.Words se añade a través de NuGet Package Manager.

Guía de paso a paso para eliminar las páginas blancas en Word usando C#

Paso 1: Configure el entorno

Instalar la biblioteca Aspose.Words a través de NuGet Package Manager.

Install-Package Aspose.Words

Paso 2: Cargar el documento de palabra

Cargue su archivo Word original utilizando el objeto de clase Document.

Document originalDoc = new Document("WordFileWithBlankPages.docx");

Paso 3: Extraer cada página por separado

Pasar por cada página y extraer cada página en un documento separado para el análisis.

int totalPages = originalDoc.PageCount;

for (int i = 0; i < totalPages; i++)
{
    Document singlePageDoc = originalDoc.ExtractPages(i, 1);
    // Analyze singlePageDoc in next steps
}

Paso 4: Análisis de documentos de página única

Verifique si el documento de una página contiene texto o formas.

int shapesCounter = 0;
string pageText = "";

foreach (Section docSection in singlePageDoc.Sections)
{
    pageText += docSection.Body.ToString(SaveFormat.Text);
    shapesCounter += docSection.Body.GetChildNodes(NodeType.Shape, true).Count;
}

Paso 5: Mantener la lista de páginas no vacías

Mantenga el seguimiento de los números de páginas que contienen contenido.

ArrayList blankPages = new ArrayList();
blankPages.Add(-1);

if (string.IsNullOrEmpty(pageText.Trim()) && shapesCounter == 0)
    blankPages.Add(i); // i is page index in loop

Paso 6: Añadir páginas no vacías a un nuevo documento

Crea un nuevo documento y añade sólo páginas no vacías utilizando la lista rastreada.

Document finalDoc = (Document)originalDoc.Clone(false);
finalDoc.RemoveAllChildren();

blankPages.Add(totalPages);

for (int i = 1; i < blankPages.Count; i++)
{
    int index = (int)blankPages[i - 1] + 1;
    int count = (int)blankPages[i] - index;

    if (count > 0)
        finalDoc.AppendDocument(originalDoc.ExtractPages(index, count), ImportFormatMode.KeepSourceFormatting);
}

Paso 7: Salva el documento modificado

Salva el nuevo documento con páginas blancas eliminadas.

finalDoc.Save(@"cleaned.docx");

Ejemplo de código completo para eliminar páginas blancas en el Word utilizando C#

A continuación está el ejemplo completo de código ejecutable que demuestra los pasos anteriores:

Document originalDoc = new Document("WordFileWithBlankPages.docx");

ArrayList blankPages = new ArrayList();
blankPages.Add(-1);

int totalPages = originalDoc.PageCount;

for (int i = 0; i < totalPages; i++)
{
    Document singlePageDoc = originalDoc.ExtractPages(i, 1);
    int shapesCounter = 0;
    string pageText = "";

    foreach (Section docSection in singlePageDoc.Sections)
    {
        pageText += docSection.Body.ToString(SaveFormat.Text);
        shapesCounter += docSection.Body.GetChildNodes(NodeType.Shape, true).Count;
    }

    if (string.IsNullOrEmpty(pageText.Trim()) && shapesCounter == 0)
        blankPages.Add(i);
}

blankPages.Add(totalPages);

Document finalDoc = (Document)originalDoc.Clone(false);
finalDoc.RemoveAllChildren();

for (int i = 1; i < blankPages.Count; i++)
{
    int index = (int)blankPages[i - 1] + 1;
    int count = (int)blankPages[i] - index;

    if (count > 0)
        finalDoc.AppendDocument(originalDoc.ExtractPages(index, count), ImportFormatMode.KeepSourceFormatting);
}

finalDoc.Save(@"NonEmptyPages.docx");
System.Console.WriteLine("Blank pages removed successfully.");

Conclusión

Este artículo explicó cómo eliminar las páginas vacías en los archivos de Word utilizando C#. Al seguir los pasos proporcionados, se puede detectar de forma programática las páginas vacías y eliminarlas, lo que resulta en un documento más limpio.

 Español