Форматирование фигур PowerPoint в PHP

Введение

В PowerPoint вы можете добавлять фигуры на слайды. Поскольку фигуры состоят из линий, их можно форматировать, изменяя или применяя эффекты к контуру. Кроме того, фигуры можно форматировать, задавая параметры заполнения их внутренних областей.

формат-формы-powerpoint

Aspose.Slides for PHP via Java предоставляет классы и методы, позволяющие форматировать фигуры с использованием тех же возможностей, что и в PowerPoint.

Форматирование линий

С помощью Aspose.Slides вы можете задать пользовательский стиль линии для фигуры. Ниже приведена последовательность действий:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите line style фигуры.
  5. Задайте толщину линии.
  6. Установите dash style линии.
  7. Задайте цвет линии для фигуры.
  8. Сохраните изменённую презентацию как файл PPTX.

Следующий PHP‑код демонстрирует, как отформатировать прямоугольный AutoShape:

// Создайте экземпляр класса Presentation, который представляет файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Rectangle.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 150, 150, 75);

    // Задайте цвет заливки для прямоугольной фигуры.
    $shape->getFillFormat()->setFillType(FillType::NoFill);

    // Примените форматирование к линиям прямоугольника.
    $shape->getLineFormat()->setStyle(LineStyle::ThickThin);
    $shape->getLineFormat()->setWidth(7);
    $shape->getLineFormat()->setDashStyle(LineDashStyle::Dash);

    // Задайте цвет линии прямоугольника.
    $shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);

    // Сохраните файл PPTX на диск.
    $presentation->save("formatted_lines.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Отформатированные линии в презентации

Применить эффекты наброска к линиям фигур

Эффект наброска делает линию фигуры выглядящей как нарисованную от руки. Используйте Shape.getLineFormat для доступа к настройкам линии, LineFormat.getSketchFormat — для доступа к настройкам наброска, и SketchFormat.setSketchType — для выбора значения из перечисления LineSketchType.

Следующий PHP‑код показывает, как применить эффект LineSketchType.Curved, прочитать явно назначенное значение и удалить эффект с помощью LineSketchType.None:

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);

    // Доступ к формату линии фигуры и её формату наброска.
    $sketchFormat = $shape->getLineFormat()->getSketchFormat();

    // Применить эффект наброска.
    $sketchFormat->setSketchType(LineSketchType::Curved);

    // Прочитать эффект наброска, назначенный непосредственно фигуре.
    $explicitSketchType = $sketchFormat->getSketchType();
    echo "Explicit sketch type: " . $explicitSketchType . PHP_EOL;

    // Удалить эффект наброска.
    $sketchFormat->setSketchType(LineSketchType::None);
} finally {
    $presentation->dispose();
}

Значение, возвращаемое SketchFormat.getSketchType, представляет настройку, непосредственно присвоенную фигуре. Если форматирование линии может наследоваться из темы, мастер‑слайда или шаблона, используйте LineFormat.getEffective, обратитесь к методу getSketchFormat полученного объекта и прочитайте его значение getSketchType. Эффективное значение отражает фактическое форматирование после разрешения наследования:

$presentation = new Presentation("presentation.pptx");
try {
    $shape = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $lineFormat = $shape->getLineFormat();

    $explicitSketchType = $lineFormat->getSketchFormat()->getSketchType();
    $effectiveLineFormat = $lineFormat->getEffective();
    $effectiveSketchType = $effectiveLineFormat->getSketchFormat()->getSketchType();

    echo "Explicit sketch type: " . $explicitSketchType . PHP_EOL;
    echo "Effective sketch type: " . $effectiveSketchType . PHP_EOL;
} finally {
    $presentation->dispose();
}

Форматирование стилей соединений

Варианты трёх типов соединений:

  • Round
  • Miter
  • Bevel

По умолчанию, когда PowerPoint соединяет две линии под углом (например, в углу фигуры), используется параметр Round. Однако при рисовании фигур с острыми углами может быть предпочтительнее вариант Miter.

Стиль соединения в презентации

Следующий PHP‑код демонстрирует, как три прямоугольника (как показано на изображении выше) были созданы с использованием настроек соединения Miter, Bevel и Round:

// Создайте экземпляр класса Presentation, который представляет файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте три автофигуры типа Rectangle.
    $shape1 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 20, 150, 75);
    $shape2 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 210, 20, 150, 75);
    $shape3 = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 135, 150, 75);

    // Установите цвет заливки для каждой прямоугольной фигуры.
    $shape1->getFillFormat()->setFillType(FillType::Solid);
    $shape1->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $shape2->getFillFormat()->setFillType(FillType::Solid);
    $shape2->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);
    $shape3->getFillFormat()->setFillType(FillType::Solid);
    $shape3->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLACK);

    // Установите толщину линии.
    $shape1->getLineFormat()->setWidth(15);
    $shape2->getLineFormat()->setWidth(15);
    $shape3->getLineFormat()->setWidth(15);

    // Задайте цвет линии для каждого прямоугольника.
    $shape1->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape1->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $shape2->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape2->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $shape3->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape3->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);

    // Задайте стиль соединения.
    $shape1->getLineFormat()->setJoinStyle(LineJoinStyle::Miter);
    $shape2->getLineFormat()->setJoinStyle(LineJoinStyle::Bevel);
    $shape3->getLineFormat()->setJoinStyle(LineJoinStyle::Round);

    // Добавьте текст к каждому прямоугольнику.
    $shape1->getTextFrame()->setText("Miter Join Style");
    $shape2->getTextFrame()->setText("Bevel Join Style");
    $shape3->getTextFrame()->setText("Round Join Style");

    // Сохраните файл PPTX на диск.
    $presentation->save("join_styles.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Градиентная заливка

В PowerPoint градиентная заливка — это параметр форматирования, позволяющий применить непрерывный переход цветов к фигуре. Например, можно задать два или более цвета, где один постепенно переходит в другой.

Вот как применить градиентную заливку к фигуре с помощью Aspose.Slides:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите FillType фигуры в Gradient.
  5. Добавьте два желаемых цвета с определёнными позициями, используя методы add коллекции остановок градиента, доступные через класс GradientFormat .
  6. Сохраните изменённую презентацию как файл PPTX.

Следующий PHP‑код демонстрирует, как применить градиентный эффект к эллипсу:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Ellipse.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Ellipse, 50, 50, 150, 75);

    // Примените градиентное форматирование к эллипсу.
    $shape->getFillFormat()->setFillType(FillType::Gradient);
    $shape->getFillFormat()->getGradientFormat()->setGradientShape(GradientShape::Linear);

    // Задайте направление градиента.
    $shape->getFillFormat()->getGradientFormat()->setGradientDirection(GradientDirection::FromCorner2);

    // Добавьте две остановки градиента.
    $shape->getFillFormat()->getGradientFormat()->getGradientStops()->addPresetColor(1.0, PresetColor::Purple);
    $shape->getFillFormat()->getGradientFormat()->getGradientStops()->addPresetColor(0, PresetColor::Red);

    // Сохраните файл PPTX на диск.
    $presentation->save("gradient_fill.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Эллипс с градиентной заливкой

Если градиент выглядит иначе в экспортированном изображении, чем в PowerPoint, см. Choose a Gradient Rendering Style. Вы можете выбрать стиль рендеринга, не меняя градиентную заливку, сохранённую в презентации.

Заливка шаблоном

В PowerPoint заливка шаблоном — это параметр форматирования, позволяющий применить двухцветный рисунок — например, точки, полосы, штриховку или шахматную сетку — к фигуре. Вы можете задать собственные цвета переднего и заднего плана шаблона.

Aspose.Slides предоставляет более 45 предопределённых стилей шаблонов, которые можно применять к фигурам для улучшения визуального восприятия презентаций. После выбора предопределённого шаблона вы всё равно можете указать точные цвета, которые он будет использовать.

Вот как применить заливку шаблоном к фигуре с помощью Aspose.Slides:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите FillType фигуры в Pattern.
  5. Выберите стиль шаблона из предопределённых вариантов.
  6. Установите Background Color шаблона.
  7. Установите Foreground Color шаблона.
  8. Сохраните изменённую презентацию как файл PPTX.

Следующий PHP‑код демонстрирует, как применить заливку шаблоном к прямоугольнику:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Rectangle.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

    // Задайте тип заливки Pattern.
    $shape->getFillFormat()->setFillType(FillType::Pattern);

    // Установите стиль шаблона.
    $shape->getFillFormat()->getPatternFormat()->setPatternStyle(PatternStyle::Trellis);

    // Задайте фон и передний цвет шаблона.
    $shape->getFillFormat()->getPatternFormat()->getBackColor()->setColor(java("java.awt.Color")->LIGHT_GRAY);
    $shape->getFillFormat()->getPatternFormat()->getForeColor()->setColor(java("java.awt.Color")->YELLOW);

    // Сохраните файл PPTX на диск.
    $presentation->save("pattern_fill.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Прямоугольник с заливкой шаблоном

Заливка изображением

В PowerPoint заливка изображением — это параметр форматирования, позволяющий вставить изображение внутрь фигуры, effectively using the image as the shape’s background.

Вот как использовать Aspose.Slides для применения заливки изображением к фигуре:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите FillType фигуры в Picture.
  5. Установите режим заливки изображения в Tile (или другой предпочтительный режим).
  6. Создайте объект PPImage из изображения, которое хотите использовать.
  7. Передайте изображение методу SlidesPicture.setImage.
  8. Сохраните изменённую презентацию как файл PPTX.

Допустим, у нас есть файл «lotus.png» со следующим изображением:

Изображение лотоса

Следующий PHP‑код демонстрирует, как заполнить фигуру изображением:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Rectangle.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 255, 130);

    // Задайте тип заливки Picture.
    $shape->getFillFormat()->setFillType(FillType::Picture);

    // Установите режим заливки изображением.
    $shape->getFillFormat()->getPictureFillFormat()->setPictureFillMode(PictureFillMode::Tile);

    // Загрузите изображение и добавьте его в ресурсы презентации.
    $image = Images::fromFile("lotus.png");
    $picture = $presentation->getImages()->addImage($image);
    $image->dispose();

    // Задайте изображение.
    $shape->getFillFormat()->getPictureFillFormat()->getPicture()->setImage($picture);

    // Сохраните файл PPTX на диск.
    $presentation->save("picture_fill.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Фигура с заливкой изображением

Замостить изображение как текстуру

Если необходимо задать замощённое изображение в качестве текстуры и настроить поведение замощения, можно использовать следующие методы класса PictureFillFormat :

  • setPictureFillMode: задаёт режим заливки изображения — Tile или Stretch.
  • setTileAlignment: определяет выравнивание плиток внутри фигуры.
  • setTileFlip: управляет горизонтальным, вертикальным или двойным отражением плитки.
  • setTileOffsetX: задаёт горизонтальное смещение плитки (в пунктах) от начала фигуры.
  • setTileOffsetY: задаёт вертикальное смещение плитки (в пунктах) от начала фигуры.
  • setTileScaleX: определяет горизонтальный масштаб плитки в процентах.
  • setTileScaleY: определяет вертикальный масштаб плитки в процентах.

Следующий пример кода показывает, как добавить прямоугольную фигуру с замощённой заливкой и настроить параметры плитки:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $firstSlide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру прямоугольника.
    $shape = $firstSlide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 190, 95);

    // Задайте тип заливки фигуры как Picture.
    $shape->getFillFormat()->setFillType(FillType::Picture);

    // Загрузите изображение и добавьте его в ресурсы презентации.
    $sourceImage = Images::fromFile("lotus.png");
    $presentationImage = $presentation->getImages()->addImage($sourceImage);
    $sourceImage->dispose();

    // Назначьте изображение фигуре.
    $pictureFillFormat = $shape->getFillFormat()->getPictureFillFormat();
    $pictureFillFormat->getPicture()->setImage($presentationImage);

    // Настройте режим заливки изображением и свойства замощения.
    $pictureFillFormat->setPictureFillMode(PictureFillMode::Tile);
    $pictureFillFormat->setTileOffsetX(-32);
    $pictureFillFormat->setTileOffsetY(-32);
    $pictureFillFormat->setTileScaleX(50);
    $pictureFillFormat->setTileScaleY(50);
    $pictureFillFormat->setTileAlignment(RectangleAlignment::BottomRight);
    $pictureFillFormat->setTileFlip(TileFlip::FlipBoth);

    // Сохраните файл PPTX на диск.
    $presentation->save("tile.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Параметры замощения

Заливка сплошным цветом

В PowerPoint заливка сплошным цветом — это параметр форматирования, заполняющий фигуру одним однородным цветом. Этот простой фон применяется без градиентов, текстур или шаблонов.

Чтобы применить сплошную заливку к фигуре с помощью Aspose.Slides, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите FillType фигуры в Solid.
  5. Присвойте фигуре желаемый цвет заливки.
  6. Сохраните изменённую презентацию как файл PPTX.

Следующий PHP‑код демонстрирует, как применить сплошную заливку к прямоугольнику в PowerPoint‑слайде:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Rectangle.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

    // Установите тип заливки Solid.
    $shape->getFillFormat()->setFillType(FillType::Solid);

    // Задайте цвет заливки.
    $shape->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->YELLOW);

    // Сохраните файл PPTX на диск.
    $presentation->save("solid_color_fill.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Фигура со сплошной заливкой цветом

Установить прозрачность

В PowerPoint, когда вы применяете сплошную заливку, градиент, изображение или текстуру к фигурам, можно также задать уровень прозрачности, контролирующий непрозрачность заливки. Более высокий уровень прозрачности делает фигуру более просвечивающей, позволяя фону или подлежащим объектам частично просвечивать.

Aspose.Slides позволяет задать уровень прозрачности, изменяя альфа‑компонент в цвете, используемом для заливки. Как это сделать:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите FillType в Solid.
  5. Используйте Color для определения цвета с прозрачностью (компонент alpha управляет прозрачностью).
  6. Сохраните презентацию.

Следующий PHP‑код демонстрирует, как задать прозрачный цвет заливки для прямоугольника:

// Создайте экземпляр класса Presentation, представляющего файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру сплошного прямоугольника.
    $solidShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

    // Добавьте автофигуру прозрачного прямоугольника поверх сплошного.
    $transparentShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 80, 80, 150, 75);
    $transparentShape->getFillFormat()->setFillType(FillType::Solid);
    $transparentShape->getFillFormat()->getSolidFillColor()->setColor(new java("java.awt.Color", 255, 255, 0, 204));

    // Сохраните файл PPTX на диск.
    $presentation->save("shape_transparency.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Прозрачная фигура

Поворот фигур

Aspose.Slides позволяет вращать фигуры в презентациях PowerPoint. Это может быть полезно при размещении визуальных элементов с определённым выравниванием или дизайнерскими требованиями.

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

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Установите свойство вращения фигуры в нужный угол.
  5. Сохраните презентацию.

Следующий PHP‑код демонстрирует, как повернуть фигуру на 5 градусов:

// Создайте экземпляр класса Presentation, который представляет файл презентации.
$presentation = new Presentation();
try {
    // Получите первый слайд.
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте автофигуру типа Rectangle.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);

    // Поверните фигуру на 5 градусов.
    $shape->setRotation(5);

    // Сохраните файл PPTX на диск.
    $presentation->save("shape_rotation.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

Поворот фигуры

Добавить 3D-эффекты фаски

Aspose.Slides позволяет применять 3D-эффекты фаски к фигурам, настраивая их свойства ThreeDFormat .

Чтобы добавить 3D-эффекты фаски к фигуре, выполните следующие шаги:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Настройте ThreeDFormat фигуры, задав параметры фаски.
  5. Сохраните презентацию.

Следующий PHP‑код показывает, как применить 3D-эффекты фаски к фигуре:

// Создайте экземпляр класса Presentation.
$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    // Добавьте фигуру на слайд.
    $shape = $slide->getShapes()->addAutoShape(ShapeType::Ellipse, 50, 50, 100, 100);
    $shape->getFillFormat()->setFillType(FillType::Solid);
    $shape->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->GREEN);
    $shape->getLineFormat()->getFillFormat()->setFillType(FillType::Solid);
    $shape->getLineFormat()->getFillFormat()->getSolidFillColor()->setColor(java("java.awt.Color")->ORANGE);
    $shape->getLineFormat()->setWidth(2.0);

    // Установите свойства ThreeDFormat фигуры.
    $shape->getThreeDFormat()->setDepth(4);
    $shape->getThreeDFormat()->getBevelTop()->setBevelType(BevelPresetType::Circle);
    $shape->getThreeDFormat()->getBevelTop()->setHeight(6);
    $shape->getThreeDFormat()->getBevelTop()->setWidth(6);
    $shape->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::OrthographicFront);
    $shape->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::ThreePt);
    $shape->getThreeDFormat()->getLightRig()->setDirection(LightingDirection::Top);

    // Сохраните презентацию как файл PPTX.
    $presentation->save("3D_bevel_effect.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

3D-эффект фаски

Добавить 3D-эффекты вращения

Aspose.Slides позволяет применять 3D-эффекты вращения к фигурам, настраивая их свойства ThreeDFormat .

Чтобы применить 3D-вращение к фигуре:

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте AutoShape на слайд.
  4. Используйте setCameraType и setLightType для задания 3D‑вращения.
  5. Сохраните презентацию.

Следующий PHP‑код демонстрирует, как применить 3D-эффекты вращения к фигуре:

// Создайте экземпляр класса Presentation.
$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $autoShape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 150, 75);
    $autoShape->getTextFrame()->setText("Hello, Aspose!");

    $autoShape->getThreeDFormat()->setDepth(6);
    $autoShape->getThreeDFormat()->getCamera()->setRotation(40, 35, 20);
    $autoShape->getThreeDFormat()->getCamera()->setCameraType(CameraPresetType::IsometricLeftUp);
    $autoShape->getThreeDFormat()->getLightRig()->setLightType(LightRigPresetType::Balanced);

    // Сохраните презентацию как файл PPTX.
    $presentation->save("3D_rotation_effect.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Результат:

3D-эффект вращения

Контроль черно-белой отрисовки фигур

Метод Shape::setBlackWhiteMode указывает, как отдельная фигура будет отрисовываться, когда презентация отображается или обрабатывается в черно-белом режиме. Он сам по себе не включает черно-белый режим и не меняет заливку, контур или другие параметры форматирования в обычном цветном режиме.

Используйте значение из класса BlackWhiteMode для выбора нужного поведения. Например, Automatic позволяет приложению выбора выполнить конверсию, Gray и LightGray используют оттенки серого, BlackWhite использует только чёрный и белый, Black и White принудительно задают один цвет, Color сохраняет обычные цвета, а Hidden исключает фигуру в черно-белом режиме. NotDefined означает, что режим на уровне фигуры не назначен.

Следующий PHP‑код создаёт цветную фигуру и делает её серой в режиме черно‑белого отображения:

use aspose\slides\BlackWhiteMode;
use aspose\slides\FillType;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;

$presentation = new Presentation();
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $shape = $slide->getShapes()->addAutoShape(ShapeType::Rectangle, 50, 50, 200, 100);
    $shape->getFillFormat()->setFillType(FillType::Solid);
    $orange = new Java("java.awt.Color", 255, 165, 0);
    $shape->getFillFormat()->getSolidFillColor()->setColor($orange);

    // Сохраните оранжевую заливку в цветном режиме, но отображайте фигуру в сером цвете в режиме черно-белого.
    $shape->setBlackWhiteMode(BlackWhiteMode::Gray);

    $presentation->save("shape_black_white_mode.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

В обычном цветном режиме прямоугольник сохраняет оранжевую заливку. В рабочем процессе черно‑белого отображения он использует серый цвет, потому что его режим установлен в Gray. Это позволяет сохранять полноцветный слайд, одновременно определяя отдельный вид для печати, предпросмотра или других процессов, учитывающих настройки черно‑белого отображения презентации.

Сброс форматирования

Следующий Java‑код показывает, как сбросить форматирование слайда и вернуть положение, размер и параметры всех фигур‑заполнителей на LayoutSlide к их значениям по умолчанию:

$presentation = new Presentation("sample.pptx");
try {
    for ($i = 0; $i < java_values($presentation->getSlides()->size()); $i++) {
        $slide = $presentation->getSlides()->get_Item($i);
        // Сбросить каждую фигуру на слайде, у которой есть заполнитель в шаблоне.
        $slide->reset();
    }
    $presentation->save("reset_formatting.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

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

Влияет ли форматирование фигур на окончательный размер файла презентации?

Только незначительно. Встроенные изображения и медиа‑файлы занимают большую часть места, а параметры фигур, такие как цвета, эффекты и градиенты, хранятся как метаданные и практически не увеличивают размер.

Как обнаружить фигуры на слайде, имеющие идентичное форматирование, чтобы их сгруппировать?

Сравните ключевые свойства форматирования каждой фигуры — заполнение, контур и параметры эффектов. Если все соответствующие значения совпадают, рассматривайте их стили как одинаковые и логически группируйте такие фигуры, что упрощает дальнейшее управление стилями.

Можно ли сохранить набор пользовательских стилей фигур в отдельный файл для повторного использования в других презентациях?

Да. Сохраните образцы фигур с нужными стилями в шаблонный набор слайдов или файл шаблона .POTX. При создании новой презентации откройте шаблон, клонируйте необходимые стилизованные фигуры и снова примените их форматирование там, где требуется.