Text aus Präsentation extrahieren
Text aus Folie extrahieren
Aspose.Slides für PHP über Java bietet die SlideUtil Klasse. Diese Klasse bietet eine Reihe von überladenen statischen Methoden zum Extrahieren des gesamten Texts aus einer Präsentation oder Folie. Um den Text von einer Folie in einer PPTX-Präsentation zu extrahieren, verwenden Sie die überladene statische Methode getAllTextBoxes der SlideUtil Klasse. Diese Methode akzeptiert das Slide-Objekt als Parameter. Bei der Ausführung scannt die Slide-Methode den gesamten Text von der übergebenen Folie und gibt ein Array von TextFrame Objekten zurück. Dies bedeutet, dass jede Textformatierung, die mit dem Text verbunden ist, verfügbar ist. Der folgende Code extrahiert den gesamten Text auf der ersten Folie der Präsentation:
# Instantiere die Presentation-Klasse, die eine PPTX-Datei repräsentiert
$pres = new Presentation("demo.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
foreach($pres->getSlides() as $slide) {
# Erhalte ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
$textFramesPPTX = SlideUtil->getAllTextBoxes($slide);
# Durchlaufe das Array von TextFrames
for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
# Durchlaufe die Absätze im aktuellen ITextFrame
foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
# Durchlaufe die Abschnitte im aktuellen IParagraph
foreach($para->getPortions() as $port) {
# Zeige den Text im aktuellen Abschnitt an
echo($port->getText());
# Zeige die Schriftgröße des Textes an
echo($port->getPortionFormat()->getFontHeight());
# Zeige den Schriftartnamen des Textes an
if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
echo($port->getPortionFormat()->getLatinFont()->getFontName());
}
}
}
}
}
} finally {
$pres->dispose();
}
Text aus Präsentation extrahieren
Um den Text aus der gesamten Präsentation zu scannen, verwenden Sie die statische Methode getAllTextFrames der SlideUtil-Klasse. Sie akzeptiert zwei Parameter:
- Zuerst ein Presentation Objekt, das die Präsentation repräsentiert, aus der der Text extrahiert wird.
- Zweitens einen booleschen Wert, der bestimmt, ob die Masterfolie bei der Texterfassung aus der Präsentation einbezogen werden soll. Die Methode gibt ein Array von TextFrame Objekten zurück, die mit Informationen zur Textformatierung ausgestattet sind. Der folgende Code scannt den Text und die Formatierungsinformationen aus einer Präsentation, einschließlich der Masterfolien.
# Instantiere die Presentation-Klasse, die eine PPTX-Datei repräsentiert
$pres = new Presentation("demo.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# Erhalte ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
$textFramesPPTX = SlideUtil->getAllTextFrames($pres, true);
# Durchlaufe das Array von TextFrames
for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
# Durchlaufe die Absätze im aktuellen ITextFrame
foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
# Durchlaufe die Abschnitte im aktuellen IParagraph
foreach($para->getPortions() as $port) {
# Zeige den Text im aktuellen Abschnitt an
echo($port->getText());
# Zeige die Schriftgröße des Textes an
echo($port->getPortionFormat()->getFontHeight());
# Zeige den Schriftartnamen des Textes an
if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
echo($port->getPortionFormat()->getLatinFont()->getFontName());
}
}
}
}
} finally {
$pres->dispose();
}
Kategorisierte und schnelle Textextraktion
Die neue statische Methode getPresentationText wurde zur Presentation-Klasse hinzugefügt. Es gibt drei Überladungen für diese Methode:
Das TextExtractionArrangingMode Enum-Argument gibt den Modus an, um das Ergebnis der Textergebnisse zu organisieren und kann auf folgende Werte gesetzt werden:
- Unarranged - Der rohe Text ohne Berücksichtigung der Position auf der Folie
- Arranged - Der Text ist in der gleichen Reihenfolge wie auf der Folie positioniert
Der Unarranged-Modus kann verwendet werden, wenn Geschwindigkeit kritisch ist, da er schneller ist als der Arranged-Modus.
IPresentationText repräsentiert den rohen Text, der aus der Präsentation extrahiert wurde. Es enthält die Methode getSlidesText die ein Array von ISlideText Objekten zurückgibt. Jedes Objekt repräsentiert den Text auf der entsprechenden Folie. Das ISlideText Objekt hat die folgenden Methoden:
- ISlideText.getText - Der Text auf den Formen der Folie
- ISlideText.getMasterText - Der Text auf den Formen der Masterseite für diese Folie
- ISlideText.getLayoutText - Der Text auf den Formen der Layoutseite für diese Folie
- ISlideText.getNotesText - Der Text auf den Formen der Notizenseite für diese Folie
Es gibt auch eine SlideText Klasse, die das ISlideText Interface implementiert.
Die neue API kann wie folgt verwendet werden:
$text1 = PresentationFactory->getInstance()->getPresentationText("presentation.pptx", TextExtractionArrangingMode->Unarranged);
echo($text1->getSlidesText()[0]->getText());
echo($text1->getSlidesText()[0]->getLayoutText());
echo($text1->getSlidesText()[0]->getMasterText());
echo($text1->getSlidesText()[0]->getNotesText());