Estrazione avanzata di testo dalle presentazioni in PHP
Panoramica
L’estrazione di testo dalle presentazioni è un compito comune ma essenziale per gli sviluppatori che lavorano con contenuti delle diapositive. Che tu stia gestendo file Microsoft PowerPoint in formato PPT o PPTX, o presentazioni OpenDocument (ODP), accedere e recuperare i dati testuali può essere fondamentale per analisi, automazione, indicizzazione o migrazione di contenuti.
Questo articolo fornisce una guida completa su come estrarre in modo efficiente testo da vari formati di presentazione, inclusi PPT, PPTX e ODP, utilizzando Aspose.Slides per PHP via Java. Imparerai come iterare sistematicamente attraverso gli elementi della presentazione per recuperare con precisione il contenuto testuale di cui hai bisogno.
Estrarre testo da una diapositiva
Aspose.Slides per PHP via Java fornisce la classe SlideUtil. Questa classe espone diversi metodi statici sovraccarichi per estrarre tutto il testo da una presentazione o da una diapositiva. Per estrarre testo da una diapositiva in una presentazione, usa il metodo getAllTextBoxes. Questo metodo accetta un oggetto di tipo BaseSlide come parametro. Quando viene eseguito, il metodo scansione l’intera diapositiva alla ricerca di testo e restituisce un array di oggetti di tipo TextFrame, preservando qualsiasi formattazione del testo.
Il frammento di codice seguente estrae tutto il testo dalla prima diapositiva della presentazione:
$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();
}
Estrarre testo da una presentazione
Per scansionare il testo dall’intera presentazione, usa il metodo statico getAllTextFrames esposto dalla classe SlideUtil. Accetta due parametri:
- Prima, un oggetto Presentation che rappresenta una presentazione PowerPoint o OpenDocument da cui verrà estratto il testo.
- Secondo, un valore
booleanche indica se includere le diapositive master durante la scansione del testo dalla presentazione.
Il metodo restituisce un array di oggetti di tipo TextFrame, includendo le informazioni di formattazione del testo. Il codice sottostante scansiona il testo e i dettagli di formattazione da una presentazione, incluse le diapositive master.
$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();
}
Estrazione di testo categorizzata e rapida
La classe PresentationFactory fornisce anche metodi per estrarre tutto il testo dalle presentazioni:
PresentationText getPresentationText(String, int);
PresentationText getPresentationText(InputStream, int);
PresentationText getPresentationText(InputStream, int, LoadOptions);
L’argomento enum TextExtractionArrangingMode indica la modalità per organizzare il risultato dell’estrazione del testo e può essere impostato sui seguenti valori:
Unarranged- Il testo grezzo senza considerare la sua posizione sulla diapositiva.Arranged- Il testo è disposto nello stesso ordine della diapositiva.
La modalità non organizzata può essere usata quando la velocità è critica; è più veloce della modalità organizzata.
PresentationText rappresenta il testo grezzo estratto dalla presentazione. Il suo metodo getSlidesText restituisce un array di oggetti in cui ogni oggetto rappresenta il testo della diapositiva corrispondente. Ogni oggetto restituito dispone dei seguenti metodi:
getText- Il testo all’interno delle forme della diapositiva.getMasterText- Il testo all’interno delle forme della diapositiva master associate a questa diapositiva.getLayoutText- Il testo all’interno delle forme della diapositiva layout associate a questa diapositiva.getNotesText- Il testo all’interno delle forme della diapositiva note associate a questa diapositiva.getCommentsText- Il testo all’interno dei commenti associati a questa diapositiva.
$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());
FAQ
Quanto velocemente Aspose.Slides elabora grandi presentazioni durante l’estrazione del testo?
Aspose.Slides è ottimizzato per alte prestazioni e può elaborare anche presentazioni di grandi dimensioni, rendendolo adatto a scenari di elaborazione in tempo reale o batch.
Aspose.Slides può estrarre testo da tabelle e grafici all’interno delle presentazioni?
Sì. Aspose.Slides può estrarre testo da molti elementi della diapositiva, incluse tabelle e oggetti correlati ai grafici, così da poter accedere e analizzare il contenuto testuale nelle strutture di presentazione più comuni.
È necessaria una licenza speciale di Aspose.Slides per estrarre testo dalle presentazioni?
Puoi estrarre testo utilizzando la versione di prova gratuita di Aspose.Slides, sebbene abbia alcune limitazioni, come l’elaborazione di un numero limitato di diapositive. Per un utilizzo senza restrizioni e per gestire presentazioni più grandi, è consigliato acquistare una licenza completa.