Конвертировать слайды PowerPoint в PNG в PHP

О конвертации PowerPoint в PNG

Формат PNG (Portable Network Graphics) не так популярен, как JPEG (Joint Photographic Experts Group), но он всё ещё очень популярен.

Случай использования: Если у вас сложное изображение и размер не имеет значения, PNG — лучший формат изображения, чем JPEG.

Конвертация PowerPoint в PNG

Выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите объект слайда из коллекции Presentation.getSlides() класса Slide.
  3. Вызовите метод Slide.getImage(), чтобы получить миниатюру каждого слайда.
  4. Используйте метод IImage.save(String formatName, int imageFormat) для сохранения миниатюры слайда в формате PNG.

Этот PHP‑код демонстрирует, как преобразовать презентацию PowerPoint в PNG:

  $pres = new Presentation("pres.pptx");
  try {
    for($index = 0; $index < java_values($pres->getSlides()->size()) ; $index++) {
      $slide = $pres->getSlides()->get_Item($index);
      $slideImage = $slide->getImage();
      try {
        $slideImage->save("image_java_" . $index . ".png", ImageFormat::Png);
      } finally {
        if (!java_is_null($slideImage)) {
          $slideImage->dispose();
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Конвертация PowerPoint в PNG с пользовательскими размерами

Если вы хотите получить PNG‑файлы определённого масштаба, можете установить значения desiredX и desiredY, которые определяют размеры получаемой миниатюры.

Этот код демонстрирует описанную операцию:

  $pres = new Presentation("pres.pptx");
  try {
    $scaleX = 2.0;
    $scaleY = 2.0;
    for($index = 0; $index < java_values($pres->getSlides()->size()) ; $index++) {
      $slide = $pres->getSlides()->get_Item($index);
      $slideImage = $slide->getImage($scaleX, $scaleY);
      try {
        $slideImage->save("image_java_" . $index . ".png", ImageFormat::Png);
      } finally {
        if (!java_is_null($slideImage)) {
          $slideImage->dispose();
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Конвертация PowerPoint в PNG с пользовательским размером

Если вы хотите получить PNG‑файлы определённого размера, можете передать желаемые параметры width и height для ImageSize.

Этот код показывает, как конвертировать PowerPoint в PNG, задав размер изображений:

  $pres = new Presentation("pres.pptx");
  try {
    $size = new Java("java.awt.Dimension", 960, 720);
    for($index = 0; $index < java_values($pres->getSlides()->size()) ; $index++) {
      $slide = $pres->getSlides()->get_Item($index);
      $slideImage = $slide->getImage($size);
      try {
        $slideImage->save("image_java_" . $index . ".png", ImageFormat::Png);
      } finally {
        if (!java_is_null($slideImage)) {
          $slideImage->dispose();
        }
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

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

Как экспортировать только определённую форму (например, диаграмму или изображение), а не весь слайд?
Aspose.Slides поддерживает создание миниатюр отдельных фигур; вы можете отрисовать форму в PNG‑изображение.

Поддерживается ли параллельная конвертация на сервере?
Да, но не следует делить один экземпляр презентации между потоками. Используйте отдельный экземпляр для каждого потока или процесса.

Каковы ограничения пробной версии при экспорте в PNG?
В режиме оценки к выходным изображениям добавляется водяной знак и применяются другие ограничения, пока не будет применена лицензия.