在 PHP 中将演示文稿幻灯片渲染为 SVG 图像

SVG 格式

SVG—可缩放矢量图形(Scalable Vector Graphics)的缩写——是一种用于渲染二维图像的标准图形类型或格式。SVG 将图像以 XML 中的向量形式存储,并包含定义其行为或外观的细节。

SVG 是为数不多的在可伸缩性、交互性、性能、可访问性、可编程性等方面符合极高标准的图像格式之一。正因为这些原因,它在网页开发中被广泛使用。

当您需要以下情况时,可能想使用 SVG 文件:

  • 非常大的尺寸打印您的演示文稿。SVG 图像可以缩放到任意分辨率或级别。您可以根据需要多次调整 SVG 图像大小而不损失质量。
  • 不同的媒介或平台中使用幻灯片中的图表和图形。大多数阅读器都能解析 SVG 文件。
  • 使用尽可能最小的图像尺寸。SVG 文件通常比其他格式(尤其是基于位图的格式,如 JPEG 或 PNG)的高分辨率等价文件更小。

将幻灯片渲染为 SVG 图像

Aspose.Slides for PHP via Java 允许您将演示文稿中的幻灯片导出为 SVG 图像。按照以下步骤生成 SVG 图像:

  1. 创建 Presentation 类的实例。
  2. 遍历演示文稿中的所有幻灯片。
  3. 通过 FileOutputStream 将每张幻灯片写入各自的 SVG 文件。

以下示例代码演示了如何使用 Aspose.Slides 将 PPT 转换为 SVG:

  $pres = new Presentation("pres.pptx");
  try {
    for($index = 0; $index < java_values($pres->getSlides()->size()) ; $index++) {
      $slide = $pres->getSlides()->get_Item($index);
      $fileStream = new Java("java.io.FileOutputStream", "slide-" . $index . ".svg");
      try {
        $slide->writeAsSvg($fileStream);
      } finally {
        $fileStream->close();
      }
    }
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

常见问题

为什么生成的 SVG 在不同浏览器中可能显示不同?

各浏览器引擎对特定 SVG 功能的实现方式不同。SVGOptions 参数有助于平滑这些不兼容性。

是否可以不仅导出幻灯片,还导出单个形状为 SVG?

是的。任何形状都可以保存为单独的 SVG,这对图标、象形图以及重复使用图形非常方便。

是否可以将多张幻灯片合并为单个 SVG(条形图/文档)?

标准场景是一张幻灯片对应一个 SVG。将多张幻灯片合并到同一 SVG 画布是需要在应用层进行的后处理步骤。