Extraction avancée de texte à partir de présentations en C++
Vue d’ensemble
Extraire du texte à partir de présentations est une tâche courante mais essentielle pour les développeurs qui travaillent avec du contenu de diapositives. Que vous manipuliez des fichiers Microsoft PowerPoint au format PPT ou PPTX, ou des présentations OpenDocument (ODP), accéder et récupérer les données textuelles peut être crucial pour l’analyse, l’automatisation, l’indexation ou la migration de contenu.
Cet article propose un guide complet sur la façon d’extraire efficacement du texte de différents formats de présentation, notamment PPT, PPTX et ODP, en utilisant Aspose.Slides for C++. Vous apprendrez à parcourir systématiquement les éléments d’une présentation afin de récupérer précisément le contenu texte dont vous avez besoin.
Extraire du texte d’une diapositive
Aspose.Slides for C++ fournit l’espace de noms Aspose.Slides.Util qui comprend la classe SlideUtil. Cette classe expose plusieurs méthodes statiques surchargées pour extraire tout le texte d’une présentation ou d’une diapositive. Pour extraire du texte d’une diapositive d’une présentation, utilisez la méthode GetAllTextBoxes. Cette méthode accepte un objet du type IBaseSlide en paramètre. Lors de son exécution, la méthode parcourt toute la diapositive à la recherche de texte et renvoie un tableau d’objets du type ITextFrame, en conservant tout formatage du texte.
Le fragment de code suivant extrait tout le texte de la première diapositive de la présentation :
auto slideIndex = 0;
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto slide = presentation->get_Slide(slideIndex);
auto textFrames = Util::SlideUtil::GetAllTextBoxes(slide);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
presentation->Dispose();
Extraire du texte d’une présentation
Pour parcourir le texte de la présentation complète, utilisez la méthode statique GetAllTextFrames exposée par la classe SlideUtil. Elle accepte deux paramètres :
- Tout d’abord, un objet IPresentation représentant une présentation PowerPoint ou OpenDocument à partir de laquelle le texte sera extrait.
- Ensuite, une valeur
Booleanindiquant si les diapositives maîtres doivent être incluses lors du balayage du texte de la présentation.
La méthode renvoie un tableau d’objets du type ITextFrame, incluant les informations de formatage du texte. Le code ci‑dessous parcourt le texte et les détails de formatage d’une présentation, y compris les diapositives maîtres.
auto presentation = System::MakeObject<Presentation>(u"demo.pptx");
auto includeMasterSlides = true;
auto textFrames = Util::SlideUtil::GetAllTextFrames(presentation, includeMasterSlides);
for (const auto& textFrame : textFrames)
{
for (const auto& paragraph : textFrame->get_Paragraphs())
{
for (const auto& portion : paragraph->get_Portions())
{
auto portionText = portion->get_Text();
Console::WriteLine(portionText);
auto portionFormat = portion->get_PortionFormat();
auto fontHeight = portionFormat->get_FontHeight();
Console::WriteLine(fontHeight);
auto latinFont = portionFormat->get_LatinFont();
if (latinFont != nullptr)
{
auto fontName = latinFont->get_FontName();
Console::WriteLine(fontName);
}
}
}
}
presentation->Dispose();
Extraction de texte catégorisée et rapide
La classe PresentationFactory propose également des méthodes pour extraire tout le texte des présentations :
System::SharedPtr<IPresentationText> GetPresentationText(System::String file, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode);
System::SharedPtr<IPresentationText> GetPresentationText(System::SharedPtr<System::IO::Stream> stream, TextExtractionArrangingMode mode, System::SharedPtr<ILoadOptions> options);
L’argument d’énumération TextExtractionArrangingMode indique le mode d’organisation du résultat d’extraction de texte et peut être défini sur les valeurs suivantes :
Unarranged– Le texte brut sans tenir compte de sa position sur la diapositive.Arranged– Le texte est organisé dans le même ordre que sur la diapositive.
Le mode non organisé peut être utilisé lorsque la vitesse est critique ; il est plus rapide que le mode organisé.
IPresentationText représente le texte brut extrait de la présentation. Sa méthode get_SlidesText() renvoie un tableau d’objets du type ISlideText. Chaque objet représente le texte de la diapositive correspondante. L’objet du type ISlideText possède les méthodes suivantes :
get_Text()– Le texte présent dans les formes de la diapositive.get_MasterText()– Le texte présent dans les formes de la diapositive maîtresse associée à cette diapositive.get_LayoutText()– Le texte présent dans les formes de la diapositive de disposition associée à cette diapositive.get_NotesText()– Le texte présent dans les formes de la diapositive de notes associée à cette diapositive.get_CommentsText()– Le texte présent dans les commentaires associés à cette diapositive.
auto presentationPath = u"presentation.ppt";
auto arrangingMode = TextExtractionArrangingMode::Unarranged;
auto presentationText = PresentationFactory::get_Instance()->GetPresentationText(presentationPath, arrangingMode);
auto firstSlideText = presentationText->get_SlidesText()[0];
Console::WriteLine(firstSlideText->get_Text());
Console::WriteLine(firstSlideText->get_LayoutText());
Console::WriteLine(firstSlideText->get_MasterText());
Console::WriteLine(firstSlideText->get_NotesText());
Console::WriteLine(firstSlideText->get_CommentsText());
FAQ
Quelle est la rapidité d’Aspose.Slides pour traiter de grandes présentations lors de l’extraction de texte ?
Aspose.Slides est optimisé pour des performances élevées et peut traiter même les présentations volumineuses, ce qui le rend adapté aux scénarios de traitement en temps réel ou en lot.
Aspose.Slides peut‑il extraire le texte des tableaux et des graphiques au sein des présentations ?
Oui. Aspose.Slides peut extraire le texte de nombreux éléments de diapositives, y compris les tableaux et les objets liés aux graphiques, ce qui vous permet d’accéder et d’analyser le contenu textuel dans les structures de présentation courantes.
Ai‑je besoin d’une licence spéciale Aspose.Slides pour extraire le texte des présentations ?
Vous pouvez extraire le texte avec la version d’essai gratuite d’Aspose.Slides, bien qu’elle comporte certaines limitations, comme le traitement d’un nombre limité de diapositives. Pour une utilisation illimitée et pour traiter des présentations plus volumineuses, l’achat d’une licence complète est recommandé.