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:

  1. Először egy IPresentation objektum, amely egy PowerPoint vagy OpenDocument prezentációt képvisel, amelyből a szöveget ki kell nyerni.
  2. 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.