Erweiterte Textextraktion aus Präsentationen in PHP

Übersicht

Text aus Präsentationen zu extrahieren ist eine häufige, aber wesentliche Aufgabe für Entwickler, die mit Folieninhalten arbeiten. Egal, ob Sie mit Microsoft PowerPoint‑Dateien im PPT‑ oder PPTX‑Format oder mit OpenDocument‑Präsentationen (ODP) arbeiten, der Zugriff auf und das Abrufen von Textdaten kann für Analysen, Automatisierung, Indexierung oder die Migration von Inhalten entscheidend sein.

Dieser Artikel bietet eine umfassende Anleitung, wie Sie Text effizient aus verschiedenen Präsentationsformaten, einschließlich PPT, PPTX und ODP, mit Aspose.Slides for PHP via Java extrahieren können. Sie lernen, wie Sie systematisch durch die Elemente einer Präsentation iterieren, um den benötigten Textinhalt genau zu erhalten.

Text aus einer Folie extrahieren

Aspose.Slides for PHP via Java bietet die SlideUtil‑Klasse. Diese Klasse stellt mehrere überladene statische Methoden zum Extrahieren des gesamten Textes aus einer Präsentation oder Folie bereit. Um Text aus einer Folie einer Präsentation zu extrahieren, verwenden Sie die getAllTextBoxes‑Methode. Diese Methode akzeptiert ein Objekt vom Typ BaseSlide als Parameter. Beim Aufruf durchsucht die Methode die gesamte Folie nach Text und gibt ein Array von Objekten des Typs TextFrame zurück, wobei sämtliche Textformatierungen erhalten bleiben.

Der folgende Codeausschnitt extrahiert den gesamten Text aus der ersten Folie der Präsentation:

$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();
}

Text aus einer Präsentation extrahieren

Um Text aus der gesamten Präsentation zu scannen, verwenden Sie die statische Methode getAllTextFrames, die von der SlideUtil‑Klasse bereitgestellt wird. Sie akzeptiert zwei Parameter:

  1. Zunächst ein Presentation‑Objekt, das eine PowerPoint‑ oder OpenDocument‑Präsentation darstellt, aus der Text extrahiert werden soll.
  2. Zweitens ein boolean‑Wert, der angibt, ob die Master‑Folien in die Texterfassung einbezogen werden sollen.

Die Methode gibt ein Array von Objekten des Typs TextFrame zurück, das Informationen zur Textformatierung enthält. Der nachstehende Code scannt Text‑ und Formatierungsdetails aus einer Präsentation, einschließlich der Master‑Folien.

$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();
}

Kategorisierte und schnelle Textextraktion

Die PresentationFactory‑Klasse bietet ebenfalls Methoden zum Extrahieren des gesamten Textes aus Präsentationen:

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

Der Enum‑Parameter TextExtractionArrangingMode gibt den Modus für die Anordnung des Extraktionsergebnisses an und kann auf folgende Werte gesetzt werden:

  • Unarranged – Der Rohtext ohne Berücksichtigung seiner Position auf der Folie.
  • Arranged – Der Text wird in derselben Reihenfolge angeordnet, wie er auf der Folie erscheint.

Der Modus Unarranged kann verwendet werden, wenn Geschwindigkeit entscheidend ist; er ist schneller als der Modus Arranged.

PresentationText stellt den rohen aus der Präsentation extrahierten Text dar. Seine Methode getSlidesText liefert ein Array von Objekten, wobei jedes Objekt den Text der entsprechenden Folie repräsentiert. Jedes zurückgegebene Objekt bietet die folgenden Methoden:

  • getText – Der Text innerhalb der Formen der Folie.
  • getMasterText – Der Text innerhalb der Formen der Master‑Folie, die dieser Folie zugeordnet ist.
  • getLayoutText – Der Text innerhalb der Formen der Layout‑Folie, die dieser Folie zugeordnet ist.
  • getNotesText – Der Text innerhalb der Formen der Notizfolie, die dieser Folie zugeordnet ist.
  • getCommentsText – Der Text innerhalb der Kommentare, die dieser Folie zugeordnet sind.
$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

Wie schnell verarbeitet Aspose.Slides große Präsentationen beim Textextrahieren?

Aspose.Slides ist für hohe Leistung optimiert und kann sogar große Präsentationen verarbeiten, sodass es für Echtzeit‑ oder Batch‑Szenarien geeignet ist.

Kann Aspose.Slides Text aus Tabellen und Diagrammen innerhalb von Präsentationen extrahieren?

Ja. Aspose.Slides kann Text aus vielen Folienelementen, einschließlich Tabellen und diagrammspezifischen Objekten, extrahieren, sodass Sie textbasierte Inhalte in gängigen Präsentationsstrukturen analysieren können.

**Benötige ich eine spezielle Aspose.Slides‑Lizenz, um Text aus Präsent