在 PHP 中将 PowerPoint 幻灯片转换为 PNG

关于 PowerPoint 到 PNG 的转换

PNG(可移植网络图形)格式的流行程度不如 JPEG(联合图像专家组),但它仍然非常流行。

使用场景: 当您拥有复杂图像且大小不是问题时,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 文件,可以设置 desiredXdesiredY 的值,这些值决定生成的缩略图的尺寸。

以下代码演示了上述操作:

  $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 文件,可以为 ImageSize 传入首选的 widthheight 参数。

以下代码展示了如何在指定图像大小的情况下将 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 时试用版有哪些限制?
评估模式会在输出图像上添加水印,并在未应用许可证前强制执行 其他限制