Управление частями текста в презентациях с помощью PHP

Получить координаты части текста

getCoordinates() метод был добавлен в класс Portion который позволяет получить координаты начала части.

  # Создать экземпляр класса Prseetation, представляющего PPTX
  $pres = new Presentation();
  try {
    # Перестройка контекста презентации
    $shape = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $textFrame = $shape->getTextFrame();
    foreach($textFrame->getParagraphs() as $paragraph) {
      foreach($paragraph->getPortions() as $portion) {
        $point = $portion->getCoordinates();
        echo("X: " . $point->$x . " Y: " . $point->$y);
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Могу ли я применить гиперссылку только к части текста в одном абзаце?

Да, вы можете назначить гиперссылку отдельной части; только этот фрагмент будет кликабельным, а не весь абзац.

Как работает наследование стилей: что переопределяет Portion и что берётся из Paragraph/TextFrame?

Свойства уровня Portion имеют наивысший приоритет. Если свойство не задано для Portion, движок берёт его из Paragraph; если оно не задано и там, — из TextFrame либо из стиля theme.

Что произойдёт, если шрифт, указанный для Portion, отсутствует на целевой машине/сервере?

Правила подстановки шрифтов применяются. Текст может перераспределяться: могут измениться метрики, переносы и ширина, что имеет значение для точного позиционирования.

Могу ли я задать прозрачность или градиент заливки текста на уровне Portion независимо от остального абзаца?

Да, цвет текста, заливка и прозрачность на уровне Portion могут отличаться от соседних фрагментов.