Добавить линии в презентации в PHP

Создать простую линию

Чтобы добавить простую линию на выбранный слайд презентации, выполните следующие шаги:

  • Создайте экземпляр класса Presentation.
  • Получите ссылку на слайд, используя его индекс.
  • Добавьте AutoShape типа Line с помощью метода addAutoShape, предоставляемого объектом ShapeCollection.
  • Запишите изменённую презентацию в файл PPTX.

В примере, приведённом ниже, мы добавили линию на первый слайд презентации.

  # Создать экземпляр класса PresentationEx, представляющего файл PPTX
  $pres = new Presentation();
  try {
    # Получить первый слайд
    $sld = $pres->getSlides()->get_Item(0);
    # Добавить AutoShape типа линия
    $sld->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    # Записать PPTX на диск
    $pres->save("LineShape.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Создать линию со стрелкой

Aspose.Slides for PHP via Java также позволяет разработчикам настраивать некоторые свойства линии, чтобы она выглядела более привлекательно. Попробуем настроить несколько свойств линии, чтобы она выглядела как стрелка. Выполните нижеуказанные шаги:

  • Создайте экземпляр класса Presentation.
  • Получите ссылку на слайд, используя его индекс.
  • Добавьте AutoShape типа Line с помощью метода addAutoShape, предоставляемого объектом ShapeCollection.
  • Установите Line Style в один из стилей, предлагаемых Aspose.Slides for PHP via Java.
  • Установите ширину линии.
  • Установите Dash Style линии в один из стилей, предлагаемых Aspose.Slides for PHP via Java.
  • Установите Arrow Head Style и Length начальной точки линии.
  • Установите Arrow Head Style и Length конечной точки линии.
  • Запишите изменённую презентацию в файл PPTX.
  # Создать экземпляр класса PresentationEx, представляющего файл PPTX
  $pres = new Presentation();
  try {
    # Получить первый слайд
    $sld = $pres->getSlides()->get_Item(0);
    # Добавить AutoShape типа line
    $shp = $sld->getShapes()->addAutoShape(ShapeType::Line, 50, 150, 300, 0);
    # Применить некоторое форматирование к линии
    $shp->getLineFormat()->setStyle(LineStyle->ThickBetweenThin);
    $shp->getLineFormat()->setWidth(10);
    $shp->getLineFormat()->setDashStyle(LineDashStyle->DashDot);
    $shp->getLineFormat()->setBeginArrowheadLength(LineArrowheadLength->Short);
    $shp->getLineFormat()->setBeginArrowheadStyle(LineArrowheadStyle->Oval);
    $shp->getLineFormat()->setEndArrowheadLength(LineArrowheadLength->Long);
    $shp->getLineFormat()->setEndArrowheadStyle(LineArrowheadStyle->Triangle);
    $shp->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shp->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(new java("java.awt.Color", PresetColor->Maroon));
    # Записать PPTX на диск
    $pres->save("LineShape.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Вопросы и ответы

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

Нет. Обычная линия (AutoShape типа Line) автоматически не становится соединителем. Чтобы она «прилипала» к фигурам, используйте тип Connector и соответствующие API /slides/php-java/connector/ для соединений.

Что делать, если свойства линии унаследованы из темы и трудно определить их конечные значения?

Читайте эффективные свойства через LineFormatEffectiveData/LineFillFormatEffectiveData — они уже учитывают наследование и стили темы.

Могу ли я заблокировать линию от редактирования (перемещения, изменения размера)?

Да. Фигуры предоставляют lock objects, позволяющие запретить операции редактирования.