Extraire du texte des présentations
Il n’est pas rare que les développeurs aient besoin d’extraire le texte d’une présentation. Pour ce faire, vous devez extraire le texte de toutes les formes de toutes les diapositives d’une présentation. Cet article explique comment extraire le texte des présentations Microsoft PowerPoint PPTX à l’aide d’Aspose.Slides. Le texte peut être extrait de plusieurs manières :
Extraction du texte d’une diapositive Extraction du texte avec la méthode GetAllTextBoxes Extraction du texte classée et rapide
Extraction du texte d’une diapositive
Aspose.Slides for C++ fournit l’espace de noms Aspose.Slides.Util qui inclut la classe PresentationScanner. Cette classe expose un certain nombre de méthodes statiques surchargées permettant d’extraire tout le texte d’une présentation ou d’une diapositive. Pour extraire le texte d’une diapositive dans une présentation PPTX, utilisez la méthode statique surchargée GetAllTextBoxes exposée par la classe PresentationScanner. Cette méthode accepte l’objet Slide comme paramètre. Lors de l’exécution, la méthode Slide analyse tout le texte de la diapositive passée en paramètre et renvoie un tableau d’objets TextFrame. Cela signifie que tout formatage de texte associé au texte est disponible. Le fragment de code suivant extrait tout le texte de la première diapositive de la présentation :
C#
//Instancie la classe PresentationEx qui représente un fichier PPTX
Presentation pptxPresentation = new Presentation(path + "demo.pptx");
//Obtient un tableau d'objets TextFrameEx depuis la première diapositive
ITextFrame[] textFramesSlideOne = SlideUtil.GetAllTextBoxes(pptxPresentation.Slides[0]);
//Parcourt le tableau de TextFrames
for (int i = 0; i < textFramesSlideOne.Length; i++)
//Parcourt les paragraphes du TextFrame actuel
foreach (Paragraph para in textFramesSlideOne[i].Paragraphs)
//Parcourt les portions du paragraphe actuel
foreach (Portion port in para.Portions)
{
//Affiche le texte de la portion actuelle
Console.WriteLine(port.Text);
//Affiche la hauteur de la police du texte
Console.WriteLine(port.PortionFormat.FontHeight);
//Affiche le nom de la police du texte
Console.WriteLine(port.PortionFormat.LatinFont.FontName);
}
Extraction du texte de toute la présentation
Pour analyser le texte de l’ensemble de la présentation, utilisez la méthode statique GetAllTextFrames exposée par la classe PresentationScanner. Elle prend deux paramètres :
- Tout d’abord, un objet Presentation qui représente la présentation PPTX dont le texte est extrait.
- Deuxièmement, une valeur booléenne déterminant si la diapositive maîtresse doit être incluse lors de l’analyse du texte de la présentation. La méthode renvoie un tableau d’objets TextFrame, complet avec les informations de formatage du texte. Le code ci‑dessous analyse le texte et les informations de formatage d’une présentation, y compris les diapositives maîtresses.
C#
//Instancier la classe Presentation qui représente un fichier PPTX
Presentation pptxPresentation = new Presentation(path + "demo.pptx");
//Obtenir un tableau d'objets ITextFrame à partir de toutes les diapositives du PPTX
ITextFrame[] textFramesPPTX = Aspose.Slides.Util.SlideUtil.GetAllTextFrames(pptxPresentation, true);
//Parcourir le tableau de TextFrames
for (int i = 0; i < textFramesPPTX.Length; i++)
//Parcourir les paragraphes du ITextFrame actuel
foreach (IParagraph para in textFramesPPTX[i].Paragraphs)
//Parcourir les portions du IParagraph actuel
foreach (IPortion port in para.Portions)
{
//Afficher le texte de la portion actuelle
Console.WriteLine(port.Text);
//Afficher la hauteur de police du texte
Console.WriteLine(port.PortionFormat.FontHeight);
//Afficher le nom de police du texte
if (port.PortionFormat.LatinFont != null)
Console.WriteLine(port.PortionFormat.LatinFont.FontName);
}
Extraction du texte classée et rapide
Nouvelle méthode statique GetPresentationText a été ajoutée à la classe Presentation. Il existe deux surcharges pour cette méthode :
PresentationText GetPresentationText(Stream stream)
PresentationText GetPresentationText(Stream stream, ExtractionMode mode)
L’argument enum ExtractionMode indique le mode d’organisation du résultat textuel et peut être défini sur les valeurs suivantes :
Unarranged - Le texte brut sans tenir compte de la position sur la diapositive Arranged - Le texte est positionné dans le même ordre que sur la diapositive
Le mode Unarranged peut être utilisé lorsque la rapidité est cruciale, il est plus rapide que le mode Arranged.
PresentationText représente le texte brut extrait de la présentation. Il contient une propriété SlidesText de l’espace de noms Aspose.Slides.Util qui renvoie un tableau d’objets ISlideText. Chaque objet représente le texte de la diapositive correspondante. L’objet ISlideText possède les propriétés suivantes :
ISlideText.Text - Le texte des formes de la diapositive ISlideText.MasterText - Le texte des formes de la page maître pour cette diapositive ISlideText.LayoutText - Le texte des formes de la page de disposition pour cette diapositive ISlideText.NotesText - Le texte des formes de la page de notes pour cette diapositive
Il existe également une classe SlideText qui implémente l’interface ISlideText.
La nouvelle API peut être utilisée ainsi :
PresentationText text1 = Presentation.GetPresentationText("presentation.ppt");
Console.WriteLine(text1.SlidesText[0].Text);
Console.WriteLine(text1.SlidesText[0].LayoutText);
Console.WriteLine(text1.SlidesText[0].MasterText);
Console.WriteLine(text1.SlidesText[0].NotesText);
PresentationText text2 = Presentation.GetPresentationText("presentation.pptx", ExtractionMode.Unarranged);