Haladó szövegkivonás prezentációkból C++-ban
Áttekintés
A prezentációkból szöveg kinyerése gyakori, ugyanakkor alapvető feladat a diákkal dolgozó fejlesztők számára. Akár Microsoft PowerPoint fájlokkal (PPT vagy PPTX formátumban), akár OpenDocument prezentációkkal (ODP) dolgozol, a szöveges adatok elérése és lekérése kulcsfontosságú lehet elemzés, automatizálás, indexelés vagy tartalom migráció céljából.
Ez a cikk átfogó útmutatót nyújt arról, hogyan lehet hatékonyan kinyerni a szöveget különböző prezentációformátumokból, beleértve a PPT, PPTX és ODP formátumokat, az Aspose.Slides for C++ használatával. Megtanulod, hogyan iterálj rendszeresen a prezentáció elemein, hogy pontosan kinyerd a szükséges szöveges tartalmat.
Szöveg kinyerése egy diáról
Az Aspose.Slides for C++ a Aspose.Slides.Util névtérrel rendelkezik, amely tartalmazza a SlideUtil osztályt. Ez az osztály több túlterhelt statikus metódust tesz elérhetővé a prezentáció vagy dia összes szövegének kinyerésére. Egy diáról való szövegkivonáshoz egy prezentációban használd a GetAllTextBoxes metódust. Ez a metódus egy IBaseSlide típusú objektumot vár paraméterként. Végrehajtáskor a metódus az egész diát átvizsgálja a szöveg után, és egy ITextFrame típusú objektumok tömbjét adja vissza, megőrizve a szöveg formázását.
Az alábbi kódrészlet kinyeri a teljes szöveget a prezentáció első diájáról:
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();
Szöveg kinyerése egy prezentációból
Az egész prezentáció szövegének beolvasásához használd a SlideUtil osztály által kínált GetAllTextFrames statikus metódust. Ez két paramétert fogad:
- Először egy IPresentation objektum, amely egy PowerPoint vagy OpenDocument prezentációt képvisel, amelyből a szöveget ki kell nyerni.
- Másodszor egy
Booleanérték, amely azt jelzi, hogy a mesterdiák is bele legyenek véve a prezentáció szövegének beolvasásakor.
A metódus egy ITextFrame típusú objektumok tömbjét adja vissza, amely tartalmazza a szöveg formázási információkat is. Az alábbi kód beolvassa a szöveget és a formázási részleteket egy prezentációból, beleértve a mesterdiákat.
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();
Kategorizált és gyors szövegkivonás
A PresentationFactory osztály szintén metódusokat kínál a prezentációkból történő teljes szövegkivonáshoz:
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);
A TextExtractionArrangingMode felsorolt típus argumentuma a szövegkivonási eredmény rendezésének módját jelzi, és a következő értékekre állítható:
Unarranged– A nyers szöveg, a dia pozíciója figyelembe vétele nélkül.Arranged– A szöveg a dián lévő sorrendben van rendezve.
Az Unarranged mód akkor használható, ha a sebesség kritikus; gyorsabb, mint a Arranged mód.
Az IPresentationText a prezentációból kinyert nyers szöveget képviseli. A get_SlidesText() metódusa egy ISlideText típusú objektumok tömbjét adja vissza. Minden objektum a megfelelő dia szövegét reprezentálja. A ISlideText típusú objektumnak a következő metódusai vannak:
get_Text()– A dia alakzatain belüli szöveg.get_MasterText()– A diához kapcsolódó mesterdia alakzatain belüli szöveg.get_LayoutText()– A diához kapcsolódó elrendezésdia alakzatain belüli szöveg.get_NotesText()– A diához kapcsolódó jegyzetdia alakzatain belüli szöveg.get_CommentsText()– A diához kapcsolódó megjegyzések szövege.
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());
GYIK
Milyen gyorsan dolgozza fel az Aspose.Slides a nagy prezentációkat a szövegkivonás során?
Az Aspose.Slides magas teljesítményre van optimalizálva, és képes nagy prezentációk feldolgozására is, így alkalmas valós idejű vagy tömeges feldolgozási helyzetekben.
Kivonhatja az Aspose.Slides a szöveget a prezentációk táblázataiból és diagramjaiból?
Igen. Az Aspose.Slides szöveget tud kinyerni számos diavázlatból, beleértve a táblázatokat és diagramokkal kapcsolatos objektumokat is, így hozzáférhetsz és elemezheted a szöveges tartalmat a gyakori prezentációs struktúrákban.
Szükségem van külön Aspose.Slides licencre a prezentációk szövegének kinyeréséhez?
A szöveget kinyerheted az Aspose.Slides ingyenes próba Verziójával, bár ez bizonyos korlátozásokkal jár, például csak korlátozott számú dia feldolgozásával. Korlátlan használathoz és nagyobb prezentációk kezeléséhez ajánlott teljes licencet vásárolni.