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

Manage Superscript and Subscript Text

Вы можете добавить надстрочный и подстрочный текст в любую часть абзаца. Для добавления надстрочного или подстрочного текста в текстовый фрейм Aspose.Slides необходимо использовать метод setEscapement класса PortionFormat.

Это свойство возвращает или задаёт надстрочный или подстрочный текст (значение от ‑100 % (подстрочный) до 100 % (надстрочный)). Например:

  • Создайте экземпляр класса Presentation.
  • Получите ссылку на слайд, используя его индекс.
  • Добавьте AutoShape типа Rectangle на слайд.
  • Получите доступ к TextFrame — связанного с AutoShape.
  • Очистите существующие абзацы.
  • Создайте новый объект абзаца для надстрочного текста и добавьте его в IParagraphs collection TextFrame.
  • Создайте новый объект portion.
  • Установите свойство Escapement для части в диапазоне от 0 до 100, чтобы добавить надстрочный текст. (0 означает отсутствие надстрочного)
  • Установите некоторый текст для Portion и затем добавьте его в коллекцию частей абзаца.
  • Создайте новый объект абзаца для подстрочного текста и добавьте его в коллекцию IParagraphs ITextFrame.
  • Создайте новый объект portion.
  • Установите свойство Escapement для части в диапазоне от 0 до ‑100, чтобы добавить подстрочный текст. (0 означает отсутствие подстрочного)
  • Установите некоторый текст для Portion и затем добавьте его в коллекцию частей абзаца.
  • Сохраните презентацию в файл PPTX.

Реализация вышеописанных шагов приведена ниже.

  # Создать объект класса Presentation, представляющий PPTX
  $pres = new Presentation();
  try {
    # Получить слайд
    $slide = $pres->getSlides()->get_Item(0);
    # Создать текстовое поле
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 100, 100, 200, 100);
    $textFrame = $shape->getTextFrame();
    $textFrame->getParagraphs()->clear();
    # Создать абзац для надстрочного текста
    $superPar = new Paragraph();
    # Создать часть с обычным текстом
    $portion1 = new Portion();
    $portion1->setText("SlideTitle");
    $superPar->getPortions()->add($portion1);
    # Создать часть с надстрочным текстом
    $superPortion = new Portion();
    $superPortion->getPortionFormat()->setEscapement(30);
    $superPortion->setText("TM");
    $superPar->getPortions()->add($superPortion);
    # Создать абзац для подстрочного текста
    $paragraph2 = new Paragraph();
    # Создать часть с обычным текстом
    $portion2 = new Portion();
    $portion2->setText("a");
    $paragraph2->getPortions()->add($portion2);
    # Создать часть с подстрочным текстом
    $subPortion = new Portion();
    $subPortion->getPortionFormat()->setEscapement(-25);
    $subPortion->setText("i");
    $paragraph2->getPortions()->add($subPortion);
    # Добавить абзацы в текстовое поле
    $textFrame->getParagraphs()->add($superPar);
    $textFrame->getParagraphs()->add($paragraph2);
    $pres->save("formatText.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Will superscript and subscript be preserved when exporting to PDF or other formats?

Да, Aspose.Slides правильно сохраняет надстрочный и подстрочный формат при экспорте презентаций в PDF, PPT/PPTX, изображения и другие поддерживаемые форматы. Специальное форматирование остаётся неизменным во всех выходных файлах.

Can superscript and subscript be combined with other formatting styles such as bold or italics?

Да, Aspose.Slides позволяет смешивать различные стили текста в одной части. Вы можете включать жирный, курсив, подчёркивание и одновременно применять надстрочный или подстрочный стиль, настраивая соответствующие свойства в PortionFormat.

Do superscript and subscript formatting work for text inside tables, charts, or SmartArt?

Да, Aspose.Slides поддерживает форматирование внутри большинства объектов, включая таблицы и элементы диаграмм. При работе с SmartArt необходимо получить доступ к соответствующим элементам (например, к SmartArtNode) и их текстовым контейнерам, а затем настроить свойства PortionFormat аналогичным образом.