Obtenir tout le texte de toutes les diapositives

OpenXML SDK

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

string FileName = FilePath + "Get all the text in a slide.pptx";

int numberOfSlides = CountSlides(FileName);

System.Console.WriteLine("Nombre de diapositives = {0}", numberOfSlides);

string slideText;

for (int i = 0; i < numberOfSlides; i++)
{
    GetSlideIdAndText(out slideText, FileName, i);
    System.Console.WriteLine("Diapositive #{0} contient : {1}", i + 1, slideText);
}

System.Console.ReadKey();

public static int CountSlides(string presentationFile)
{
    // Ouvrir la présentation en lecture seule.
    using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
    {
        // Passer la présentation à la méthode CountSlides suivante
        // et renvoyer le nombre de diapositives.
        return CountSlides(presentationDocument);
    }
}

// Compter les diapositives dans la présentation.
public static int CountSlides(PresentationDocument presentationDocument)
{
    // Vérifier qu'un objet document n'est pas nul.
    if (presentationDocument == null)
    {
        throw new ArgumentNullException("presentationDocument");
    }

    int slidesCount = 0;
    // Obtenir la partie présentation du document.
    PresentationPart presentationPart = presentationDocument.PresentationPart;
    // Obtenir le nombre de diapositives à partir des SlideParts.
    if (presentationPart != null)
    {
        slidesCount = presentationPart.SlideParts.Count();
    }
    // Retourner le nombre de diapositives à la méthode précédente.
    return slidesCount;
}

public static void GetSlideIdAndText(out string sldText, string docName, int index)
{
    using (PresentationDocument ppt = PresentationDocument.Open(docName, false))
    {
        // Obtenir l'ID de relation de la première diapositive.
        PresentationPart part = ppt.PresentationPart;
        OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements;
        string relId = (slideIds[index] as SlideId).RelationshipId;
        // Obtenir la partie diapositive à partir de l'ID de relation.
        SlidePart slide = (SlidePart)part.GetPartById(relId);
        // Créer un objet StringBuilder.
        StringBuilder paragraphText = new StringBuilder();
        // Obtenir le texte interne de la diapositive :
        IEnumerable<A.Text> texts = slide.Slide.Descendants<A.Text>();
        foreach (A.Text text in texts)
        {
            paragraphText.Append(text.Text);
        }
        sldText = paragraphText.ToString();
    }
}

Aspose.Slides

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

string FileName = FilePath + "Get all the text in a slide.pptx";

int numberOfSlides = CountSlides(FileName);

System.Console.WriteLine("Nombre de diapositives = {0}", numberOfSlides);

string slideText;

for (int i = 0; i < numberOfSlides; i++)
{
    slideText = GetSlideText(FileName, i);
    System.Console.WriteLine("Diapositive #{0} contient : {1}", i + 1, slideText);
}

System.Console.ReadKey();

public static int CountSlides(string presentationFile)
{
    // Instancier la classe PresentationEx qui représente un PPTX
    using (Presentation pres = new Presentation(presentationFile))
    {
        return pres.Slides.Count;
    }
}

public static string GetSlideText(string docName, int index)
{
    string sldText = "";
    // Instancier la classe PresentationEx qui représente un PPTX
    using (Presentation pres = new Presentation(docName))
    {
        // Accéder à la diapositive
        ISlide sld = pres.Slides[index];
        // Parcourir les formes pour trouver le placeholder
        foreach (Shape shp in sld.Shapes)
            if (shp.Placeholder != null)
            {
                // obtenir le texte de chaque placeholder
                sldText += ((AutoShape)shp).TextFrame.Text;
            }
    }
    return sldText;
}

Télécharger le code d’exemple