Obtener todo el texto en una diapositiva

OpenXML SDK


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Obtener todo el texto en una diapositiva.pptx";

foreach (string s in GetAllTextInSlide(FileName, 0))

Console.WriteLine(s);

Console.ReadKey();

// Obtener todo el texto en una diapositiva.

public static string[] GetAllTextInSlide(string presentationFile, int slideIndex)

{

    // Abrir la presentación como solo lectura.

    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))

    {

        // Pasar la presentación y el índice de la diapositiva

        // al siguiente método GetAllTextInSlide, y

        // luego devolver el array de cadenas que devuelve. 

        return GetAllTextInSlide(presentationDocument, slideIndex);

    }

}

public static string[] GetAllTextInSlide(PresentationDocument presentationDocument, int slideIndex)

{

    // Verificar que el documento de presentación exista.

    if (presentationDocument == null)

    {

        throw new ArgumentNullException("presentationDocument");

    }

    // Verificar que el índice de la diapositiva no esté fuera de rango.

    if (slideIndex < 0)

    {

        throw new ArgumentOutOfRangeException("slideIndex");

    }

    // Obtener la parte de presentación del documento de presentación.

    PresentationPart presentationPart = presentationDocument.PresentationPart;

    // Verificar que la parte de presentación y la presentación existan.

    if (presentationPart != null && presentationPart.Presentation != null)

    {

        // Obtener el objeto Presentation de la parte de presentación.

        Presentation presentation = presentationPart.Presentation;

        // Verificar que la lista de ID de diapositivas exista.

        if (presentation.SlideIdList != null)

        {

            // Obtener la colección de IDs de diapositivas de la lista de ID de diapositivas.

            DocumentFormat.OpenXml.OpenXmlElementList slideIds =

                presentation.SlideIdList.ChildElements;

            // Si el ID de la diapositiva está en rango...

            if (slideIndex < slideIds.Count)

            {

                // Obtener el ID de relación de la diapositiva.

                string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId;

                // Obtener la parte de diapositiva especificada del ID de relación.

                SlidePart slidePart =

                    (SlidePart)presentationPart.GetPartById(slidePartRelationshipId);

                // Pasar la parte de la diapositiva al siguiente método, y

                // luego devolver el array de cadenas que ese método

                // devuelve al método anterior.

                return GetAllTextInSlide(slidePart);

            }

        }

    }

    // Si no, devolver null.

    return null;

}

public static string[] GetAllTextInSlide(SlidePart slidePart)

{

    // Verificar que la parte de la diapositiva exista.

    if (slidePart == null)

    {

        throw new ArgumentNullException("slidePart");

    }

    // Crear una nueva lista enlazada de cadenas.

    LinkedList<string> texts = new LinkedList<string>();

    // Si la diapositiva existe...

    if (slidePart.Slide != null)

    {

        // Iterar a través de todos los párrafos en la diapositiva.

        foreach (DocumentFormat.OpenXml.Drawing.Paragraph paragraph in

            slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Paragraph>())

        {

            // Crear un nuevo StringBuilder.                    

            StringBuilder paragraphText = new StringBuilder();

            // Iterar a través de las líneas del párrafo.

            foreach (DocumentFormat.OpenXml.Drawing.Text text in

                paragraph.Descendants<DocumentFormat.OpenXml.Drawing.Text>())

            {

                // Adjuntar cada línea a las líneas anteriores.

                paragraphText.Append(text.Text);

            }

            if (paragraphText.Length > 0)

            {

                // Agregar cada párrafo a la lista enlazada.

                texts.AddLast(paragraphText.ToString());

            }

        }

    }

    if (texts.Count > 0)

    {

        // Devolver un array de cadenas.

        return texts.ToArray();

    }

    else

    {

        return null;

    }

}

Aspose.Slides


 string FilePath = @"..\..\..\..\Sample Files\";

string FileName = FilePath + "Obtener todo el texto en una diapositiva.pptx";

foreach (string s in GetAllTextInSlide(FileName, 0))

Console.WriteLine(s);

Console.ReadKey();

// Obtener todo el texto en una diapositiva.

public static List<string> GetAllTextInSlide(string presentationFile, int slideIndex)

{

// Crear una nueva lista enlazada de cadenas.

List<string> texts = new List<string>();

//Instanciar la clase PresentationEx que representa PPTX

using (Presentation pres = new Presentation(presentationFile))

{

    //Acceder a la diapositiva

    ISlide sld = pres.Slides[slideIndex];

    //Iterar a través de las formas para encontrar el marcador de posición

    foreach (Shape shp in sld.Shapes)

        if (shp.Placeholder != null)

        {

            //obtener el texto de cada marcador de posición

            texts.Add(((AutoShape)shp).TextFrame.Text);

        }

}

// Devolver un array de cadenas.

return texts;

}

Descargar Código de Ejemplo