Извлечение текста из презентации

Извлечение текста из слайда

Aspose.Slides для PHP через Java предоставляет класс SlideUtil. Этот класс предлагает несколько перегруженных статических методов для извлечения всего текста из презентации или слайда. Чтобы извлечь текст из слайда в презентации PPTX, используйте перегруженный статический метод getAllTextBoxes класса SlideUtil. Этот метод принимает объект Slide в качестве параметра. При выполнении метод Slide сканирует весь текст со слайда, переданного в качестве параметра, и возвращает массив объектов TextFrame. Это означает, что вся информация о форматировании текста доступна. Следующий фрагмент кода извлекает весь текст на первом слайде презентации:

  # Создайте экземпляр класса Presentation, представляющего файл PPTX
  $pres = new Presentation("demo.pptx");
  $Array = new java_class("java.lang.reflect.Array");
  try {
    foreach($pres->getSlides() as $slide) {
      # Получите массив объектов ITextFrame со всех слайдов в PPTX
      $textFramesPPTX = SlideUtil->getAllTextBoxes($slide);
      # Пройдите через массив TextFrames
      for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
        # Пройдите через абзацы в текущем ITextFrame
        foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
          # Пройдите через части в текущем IParagraph
          foreach($para->getPortions() as $port) {
            # Выведите текст в текущей части
            echo($port->getText());
            # Выведите высоту шрифта текста
            echo($port->getPortionFormat()->getFontHeight());
            # Выведите имя шрифта текста
            if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
              echo($port->getPortionFormat()->getLatinFont()->getFontName());
            }
          }
        }
      }
    }
  } finally {
    $pres->dispose();
  }

Извлечение текста из презентации

Чтобы просканировать текст из всей презентации, используйте статический метод getAllTextFrames класса SlideUtil. Он принимает два параметра:

  1. Во-первых, объект Presentation, который представляет собой презентацию, из которой извлекается текст.
  2. Во-вторых, логическое значение, определяющее, следует ли включать мастер-слайд при сканировании текста из презентации. Метод возвращает массив объектов TextFrame, включая информацию о форматировании текста. В приведенном ниже коде сканируются текст и информация о форматировании из презентации, включая мастер-слайды.
  # Создайте экземпляр класса Presentation, представляющего файл PPTX
  $pres = new Presentation("demo.pptx");
  $Array = new java_class("java.lang.reflect.Array");
  try {
    # Получите массив объектов ITextFrame со всех слайдов в PPTX
    $textFramesPPTX = SlideUtil->getAllTextFrames($pres, true);
    # Пройдите через массив TextFrames
    for($i = 0; $i < java_values($Array->getLength($textFramesPPTX)) ; $i++) {
      # Пройдите через абзацы в текущем ITextFrame
      foreach($textFramesPPTX[$i]->getParagraphs() as $para) {
        # Пройдите через части в текущем IParagraph
        foreach($para->getPortions() as $port) {
          # Выведите текст в текущей части
          echo($port->getText());
          # Выведите высоту шрифта текста
          echo($port->getPortionFormat()->getFontHeight());
          # Выведите имя шрифта текста
          if (!java_is_null($port->getPortionFormat()->getLatinFont())) {
            echo($port->getPortionFormat()->getLatinFont()->getFontName());
          }
        }
      }
    }
  } finally {
    $pres->dispose();
  }

Классифицированное и быстрое извлечение текста

В класс Presentation был добавлен новый статический метод getPresentationText. У этого метода есть три перегрузки:


Аргумент перечисления TextExtractionArrangingMode указывает режим организации вывода текста и может быть установлен на следующие значения:

  • Unarranged - сырой текст без учета положения на слайде
  • Arranged - текст располагается в том же порядке, что и на слайде

Режим Unarranged может быть использован, когда скорость критична, он быстрее, чем режим Arranged.

IPresentationText представляет собой сырой текст, извлеченный из презентации. Он содержит метод getSlidesText который возвращает массив объектов ISlideText. Каждый объект представляет текст на соответствующем слайде. Объект ISlideText имеет следующие методы:

Существует также класс SlideText, который реализует интерфейс ISlideText.

Новое API можно использовать следующим образом:

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