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:

  1. Zuerst ein Presentation Objekt, das die Präsentation repräsentiert, aus der der Text extrahiert wird.
  2. 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:

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