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:
- Először egy Presentation objektumot, amely egy PowerPoint vagy OpenDocument prezentációt reprezentál, amelyből a szöveget ki kell vonni.
- 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.