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

Управление свойствами шрифтов

Для управления свойствами шрифта абзаца с помощью Aspose.Slides for PHP via Java:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, используя его индекс.
  3. Получите формы Placeholder на слайде и приведите их к типу AutoShape.
  4. Получите Paragraph из TextFrame, предоставляемого AutoShape.
  5. Выровняйте абзац по ширине.
  6. Получите Portion текста Paragraph.
  7. Определите шрифт с помощью FontData и соответственно установите Font текста Portion.
    1. Установите шрифт полужирным.
    2. Установите шрифт курсивом.
  8. Установите цвет шрифта с помощью FillFormat, предоставляемого объектом Portion.
  9. Сохраните изменённую презентацию в файл PPTX.

Реализация указанных выше шагов приведена ниже. Она берёт простую презентацию и форматирует шрифты на одном из слайдов. Снятые скриншоты показывают исходный файл и то, как фрагменты кода изменяют его. Код изменяет шрифт, цвет и стиль шрифта.

todo:image_alt_text
Рисунок: Текст во входном файле
todo:image_alt_text
Рисунок: Тот же текст с обновлённым форматированием
  # Создать объект Presentation, представляющий файл PPTX
  $pres = new Presentation("FontProperties.pptx");
  try {
    # Получить слайд по его позиции
    $slide = $pres->getSlides()->get_Item(0);
    # Получить первый и второй плейсхолдер на слайде и привести их к типу AutoShape
    $tf1 = $slide->getShapes()->get_Item(0)->getTextFrame();
    $tf2 = $slide->getShapes()->get_Item(1)->getTextFrame();
    # Получить первый абзац
    $para1 = $tf1->getParagraphs()->get_Item(0);
    $para2 = $tf2->getParagraphs()->get_Item(0);
    # Выравнивание абзаца по ширине
    $para2->getParagraphFormat()->setAlignment(TextAlignment->JustifyLow);
    # Получить первую часть
    $port1 = $para1->getPortions()->get_Item(0);
    $port2 = $para2->getPortions()->get_Item(0);
    # Определить новые шрифты
    $fd1 = new FontData("Elephant");
    $fd2 = new FontData("Castellar");
    # Назначить новые шрифты части
    $port1->getPortionFormat()->setLatinFont($fd1);
    $port2->getPortionFormat()->setLatinFont($fd2);
    # Установить шрифт жирным
    $port1->getPortionFormat()->setFontBold(NullableBool::True);
    $port2->getPortionFormat()->setFontBold(NullableBool::True);
    # Установить шрифт курсивом
    $port1->getPortionFormat()->setFontItalic(NullableBool::True);
    $port2->getPortionFormat()->setFontItalic(NullableBool::True);
    # Установить цвет шрифта
    $port1->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $port1->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $port2->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $port2->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    # Сохранить PPTX на диск
    $pres->save("WelcomeFont.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установка свойств шрифта текста

Для создания текстового поля и установки свойств шрифта текста в нём:

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, используя его индекс.
  3. Добавьте к слайду AutoShape типа Rectangle.
  4. Удалите стиль заливки, связанный с AutoShape.
  5. Получите TextFrame у AutoShape.
  6. Добавьте некоторый текст в TextFrame.
  7. Получите объект Portion, связанный с TextFrame.
  8. Определите шрифт, который будет использоваться для Portion.
  9. Установите другие свойства шрифта, такие как полужирный, курсив, подчёркивание, цвет и высота, используя соответствующие свойства, предоставляемые объектом Portion.
  10. Запишите изменённую презентацию в файл PPTX.

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

todo:image_alt_text
Рисунок: Текст с установленными некоторыми свойствами шрифта, заданными Aspose.Slides for PHP via Java
  # Создать объект Presentation, представляющий файл PPTX
  $pres = new Presentation();
  try {
    # Получить первый слайд
    $sld = $pres->getSlides()->get_Item(0);
    # Добавить AutoShape типа Rectangle
    $ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 200, 50);
    # Удалить любой стиль заливки, связанный с AutoShape
    $ashp->getFillFormat()->setFillType(FillType::NoFill);
    # Получить TextFrame, связанный с AutoShape
    $tf = $ashp->getTextFrame();
    $tf->setText("Aspose TextBox");
    # Получить Portion, связанный с TextFrame
    $port = $tf->getParagraphs()->get_Item(0)->getPortions()->get_Item(0);
    # Задать шрифт для Portion
    $port->getPortionFormat()->setLatinFont(new FontData("Times New Roman"));
    # Установить свойство Bold для шрифта
    $port->getPortionFormat()->setFontBold(NullableBool::True);
    # Установить свойство Italic для шрифта
    $port->getPortionFormat()->setFontItalic(NullableBool::True);
    # Установить свойство Underline для шрифта
    $port->getPortionFormat()->setFontUnderline(TextUnderlineType::Single);
    # Задать высоту шрифта
    $port->getPortionFormat()->setFontHeight(25);
    # Установить цвет шрифта
    $port->getPortionFormat()->getFillFormat()->setFillType(FillType::Solid);
    $port->getPortionFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    # Сохранить презентацию на диск
    $pres->save("pptxFont.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }