Erweiterte Textextraktion aus Präsentationen in PHP
Text aus Folien extrahieren
Aspose.Slides for PHP via Java stellt die Klasse SlideUtil bereit. Diese Klasse stellt eine Reihe von überladenen statischen Methoden zum Extrahieren des gesamten Textes aus einer Präsentation oder Folie bereit. Um den Text aus einer Folie in einer PPTX‑Präsentation zu extrahieren, verwenden Sie die überladene statische Methode getAllTextBoxes , die von der Klasse SlideUtil bereitgestellt wird. Diese Methode akzeptiert das Slide‑Objekt als Parameter.
Bei der Ausführung durchsucht die Slide‑Methode den gesamten Text der als Parameter übergebenen Folie und gibt ein Array von TextFrame-Objekten zurück. Das bedeutet, dass alle mit dem Text verbundenen Formatierungen verfügbar sind. Der folgende Codeausschnitt extrahiert den gesamten Text der ersten Folie der Präsentation:
# Instanziieren der 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) {
# Erhalten Sie ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
$textFramesPPTX = SlideUtil->getAllTextBoxes($slide);
# Durchlaufen Sie das Array von TextFrames
for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
# Durchlaufen Sie die Absätze im aktuellen ITextFrame
foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
# Durchlaufen Sie die Portions im aktuellen IParagraph
foreach($para->getPortions() as $port) {
# Anzeige des Textes im aktuellen Teil
echo($port->getText());
# Anzeige der Schriftgröße des Textes
echo($port->getPortionFormat()->getFontHeight());
# Anzeige des Schriftartnamens des Textes
if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
echo($port->getPortionFormat()->getLatinFont()->getFontName());
}
}
}
}
}
} finally {
$pres->dispose();
}
Text aus Präsentationen extrahieren
Um den Text aus der gesamten Präsentation zu durchsuchen, verwenden Sie die statische Methode getAllTextFrames , die von der Klasse SlideUtil bereitgestellt wird. Sie übernimmt zwei Parameter:
- Zunächst ein Presentation-Objekt, das die Präsentation repräsentiert, aus der der Text extrahiert wird.
- Zweitens ein Boolescher Wert, der festlegt, ob die Master‑Folien beim Durchsuchen des Textes aus der Präsentation einbezogen werden sollen.
Die Methode gibt ein Array von TextFrame-Objekten zurück, einschließlich aller Textformatierungsinformationen. Der nachstehende Code scannt den Text und die Formatierungsinformationen einer Präsentation, einschließlich der Master‑Folien.
# Instanziieren Sie die Presentation-Klasse, die eine PPTX-Datei repräsentiert
$pres = new Presentation("demo.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
# Erhalten Sie ein Array von ITextFrame-Objekten aus allen Folien in der PPTX
$textFramesPPTX = SlideUtil->getAllTextFrames($pres, true);
# Durchlaufen Sie das Array von TextFrames
for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
# Durchlaufen Sie die Absätze im aktuellen ITextFrame
foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
# Durchlaufen Sie die Portions im aktuellen IParagraph
foreach($para->getPortions() as $port) {
# Anzeige des Textes im aktuellen Teil
echo($port->getText());
# Anzeige der Schriftgröße des Textes
echo($port->getPortionFormat()->getFontHeight());
# Anzeige des Schriftartnamens des Textes
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 Klasse Presentation hinzugefügt. Für diese Methode gibt es drei Überladungen:
The TextExtractionArrangingMode enum argument indicates the mode to organize the output of text result and can be set to the following values:
- Unarranged - The raw text with no respect to position on the slide
- Arranged - The text is positioned in the same order as on the slide
Unarranged mode can be used when speed is critical, it’s faster than Arranged mode.
IPresentationText represents the raw text extracted from the presentation. It contains a getSlidesText method which returns an array of ISlideText objects. Every object represent the text on the corresponding slide. ISlideText object have the following methods:
- ISlideText.getText - The text on the slide’s shapes
- ISlideText.getMasterText - The text on the master page’s shapes for this slide
- ISlideText.getLayoutText - The text on the layout page’s shapes for this slide
- ISlideText.getNotesText - The text on the notes page’s shapes for this slide
There is also a SlideText class which implements the ISlideText interface.
The new API can be used like this:
$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());
FAQ
Wie schnell verarbeitet Aspose.Slides große Präsentationen bei der Textextraktion?
Aspose.Slides ist für hohe Leistung optimiert und verarbeitet selbst große Präsentationen effizient, wodurch es sich für Echtzeit‑ oder Batch‑Verarbeitungsszenarien eignet.
Kann Aspose.Slides Text aus Tabellen und Diagrammen innerhalb von Präsentationen extrahieren?
Ja, Aspose.Slides unterstützt das Extrahieren von Text aus Tabellen, Diagrammen und anderen komplexen Folienelementen vollständig, sodass Sie sämtlichen Textinhalt leicht zugreifen und analysieren können.
Benötige ich eine spezielle Aspose.Slides‑Lizenz, um Text aus Präsentationen zu extrahieren?
Sie können Text mit der kostenlosen Testversion von Aspose.Slides extrahieren, allerdings hat diese bestimmte Einschränkungen, z. B. die Verarbeitung nur einer begrenzten Anzahl von Folien. Für uneingeschränkte Nutzung und zur Verarbeitung größerer Präsentationen wird der Erwerb einer Voll‑Lizenz empfohlen.