Haladó szövegkinyerés prezentációkból PHP-ben

Áttekintés

A prezentációkból szöveg kinyerése gyakori, mégis alapvető feladat a diatartalommal 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 kritikus lehet elemzés, automatizálás, indexelés vagy tartalomátvitel 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 PHP via Java használatával. Megtanulod, hogyan iterálj rendszerszerűen a prezentációelemek között, hogy pontosan a szükséges szövegtartalmat kapd meg.

Szöveg kinyerése egy diáról

Az Aspose.Slides for PHP via Java a SlideUtil osztályt biztosítja. Ez az osztály több túlterhelt statikus metódust kínál a prezentáció vagy dia teljes szövegének kinyerésére. Egy diáról való szövegkivonáshoz használd a getAllTextBoxes metódust. Ez a metódus egy BaseSlide típusú objektumot vesz paraméterként. A futtatás során a metódus bejárja az egész diát szöveg után, és egy TextFrame típusú objektumok tömbjét adja vissza, megtartva a szövegformázást.

Az alábbi kódrészlet kinyeri a prezentáció első diájának összes szövegét:

$slideIndex = 0;

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $slide = $presentation->getSlides()->get_Item($slideIndex);

    $textFrames = SlideUtil::getAllTextBoxes($slide);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

Szöveg kinyerése egy prezentációból

A prezentáció teljes szövegének beolvasásához használd a SlideUtil osztály által biztosított getAllTextFrames statikus metódust. Két paramétert fogad:

  1. Először egy Presentation objektumot, amely egy PowerPoint vagy OpenDocument prezentációt reprezentál, amelyből a szöveget ki kell vonni.
  2. Másodszor egy boolean értéket, amely jelzi, hogy a mesterdiák is bekerüljenek-e a szöveg beolvasásakor.

A metódus egy TextFrame típusú objektumok tömbjét adja vissza, beleértve a szövegformázási információkat is. Az alábbi kód beolvassa a szöveget és a formázási részleteket a prezentációból, beleértve a mesterdiákat.

$presentation = new Presentation("demo.pptx");
$arrayClass = new java_class("java.lang.reflect.Array");

try {
    $includeMasterSlides = true;
    $textFrames = SlideUtil::getAllTextFrames($presentation, $includeMasterSlides);
    $textFrameCount = java_values($arrayClass->getLength($textFrames));

    for ($textFrameIndex = 0; $textFrameIndex < $textFrameCount; $textFrameIndex++) {
        foreach ($textFrames[$textFrameIndex]->getParagraphs() as $paragraph) {
            foreach ($paragraph->getPortions() as $portion) {
                $portionText = $portion->getText();
                echo($portionText);

                $portionFormat = $portion->getPortionFormat();
                $fontHeight = $portionFormat->getFontHeight();
                echo($fontHeight);

                $latinFont = $portionFormat->getLatinFont();
                if (!java_is_null($latinFont)) {
                    $fontName = $latinFont->getFontName();
                    echo($fontName);
                }
            }
        }
    }
} finally {
    $presentation->dispose();
}

Kategorizált és gyors szövegkinyerés

A PresentationFactory osztály szintén biztosít metódusokat a prezentációk teljes szövegtartalmának kinyerésére:

PresentationText getPresentationText(String, int);
PresentationText getPresentationText(InputStream, int);
PresentationText getPresentationText(InputStream, int, LoadOptions);

A TextExtractionArrangingMode enum argumentum határozza meg a szövegkinyerés eredményének rendezési módját, és az alábbi értékek közül választható:

  • Unarranged – A nyers szöveg a dia helyzetét figyelembe véve nélkül.
  • Arranged – A szöveg a dián látható sorrendben van elrendezve.

Az Unarranged módot akkor érdemes használni, amikor a sebesség kritikus; ez gyorsabb, mint a Arranged mód.

A PresentationText a prezentációból kinyert nyers szöveget képviseli. A getSlidesText metódusa egy objektumtömböt ad vissza, ahol minden objektum a megfelelő dia szövegét tartalmazza. Minden visszaadott objektumnak a következő metódusai vannak:

  • getText – A dia alakzatain belüli szöveg.
  • getMasterText – A mesterdia alakzatain belüli szöveg, amely ehhez a diához kapcsolódik.
  • getLayoutText – A layoutdia alakzatain belüli szöveg, amely ehhez a diához kapcsolódik.
  • getNotesText – A jegyzetdia alakzatain belüli szöveg, amely ehhez a diához kapcsolódik.
  • getCommentsText – A diával kapcsolatos megjegyzésekben lévő szöveg.
$presentationPath = "presentation.ppt";
$arrangingMode = TextExtractionArrangingMode::Unarranged;
$presentationText = PresentationFactory::getInstance()->getPresentationText($presentationPath, $arrangingMode);
$slidesText = $presentationText->getSlidesText();
$firstSlideText = $slidesText[0];

echo($firstSlideText->getText());
echo($firstSlideText->getLayoutText());
echo($firstSlideText->getMasterText());
echo($firstSlideText->getNotesText());
echo($firstSlideText->getCommentsText());

GYIK

Milyen gyorsan dolgozza fel az Aspose.Slides a nagy prezentációkat szövegkinyerés közben?

Az Aspose.Slides magas teljesítményre van optimalizálva, és akár nagy prezentációkat is képes feldolgozni, ami alkalmas valós idejű vagy kötegelt feldolgozási forgatókönyvekre.

Képes-e az Aspose.Slides szöveget kinyerni a táblázatokból és diagramokból a prezentációkban?

Igen. Az Aspose.Slides képes szöveget kinyerni számos diában lévő elemből, beleértve a táblázatokat és a diagramokhoz kapcsolódó objektumokat, így hozzáférhetsz és elemezheted a szöveges tartalmat a gyakori prezentációs struktúrákban.

Szükségem van speciális Aspose.Slides licencre a szövegkinyeréshez?

A szöveget a Aspose.Slides ingyenes próbaverziójával is kinyerheted, 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 a teljes licenc megvásárlása ajánlott.