在 PHP 中创建演示文稿

概述

本文展示如何在 Aspose.Slides 中创建演示文稿、向其第一张幻灯片添加文本框并将结果保存为文件。还演示了如何创建并保存空演示文稿,以及如何打开已支持格式的现有演示文稿并以另一种格式保存。文末的简短 FAQ 覆盖了有关格式、模板、幻灯片尺寸、单位、内存使用、线程、授权、数字签名和 VBA 支持的常见问题。

在开始之前,请使用 Composer 安装 Aspose.Slides for PHP via Java 并在 Apache Tomcat 中启动 PHP/Java Bridge。完整的安装请参阅Installation。下面的示例假设 Tomcat 正在 localhost:8080 上运行,Composer 的 vendor 文件夹位于脚本旁边。

创建 PowerPoint 演示文稿

要创建演示文稿并在其第一张幻灯片上放置文本框,请按以下步骤操作:

  1. 创建一个 Presentation 类的实例。新演示文稿已经包含一张空幻灯片。
  2. 通过索引 0,从 Presentation::getSlides 返回的集合中获取该幻灯片。
  3. 使用 ShapeCollection::addAutoShape 方法添加一个矩形,并使用 TextFrame::setText 设置其文本。
  4. 使用 Presentation::save 方法将演示文稿保存为 PPTX 文件。
<?php
require_once("http://localhost:8080/JavaBridge/java/Java.inc");
require_once(__DIR__ . "/vendor/aspose/slides/zh/lib/aspose.slides.php");

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, 400, 100);
    $shape->getTextFrame()->setText("Hello, Aspose.Slides!");
    $presentation->save(__DIR__ . "/hello.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

这两行 require_once 从 Tomcat 加载 PHP/Java Bridge 客户端,并从 Composer 包加载 Aspose.Slides 类。矩形的左上角距幻灯片左边缘 50 点,距顶部 50 点,矩形宽 400 点,高 100 点。保存的文件包含一张带有该矩形及其文本的幻灯片。未授权时,Aspose.Slides 会在保存的每张幻灯片上添加评估水印;请参阅Licensing。

创建并保存演示文稿

要创建空演示文稿并保存,实例化 Presentation 类并使用 SaveFormat 枚举中的任意格式保存。结果是一个包含一张空幻灯片的演示文稿。

<?php
require_once("http://localhost:8080/JavaBridge/java/Java.inc");
require_once(__DIR__ . "/vendor/aspose/slides/zh/lib/aspose.slides.php");

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $presentation->save(__DIR__ . "/OutputPresentation.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

打开并保存演示文稿

要将演示文稿从一种格式转换为另一种格式,先将文件路径传递给 Presentation 构造函数打开,然后以目标格式保存。Aspose.Slides 会从文件本身检测输入格式,如 PPT、PPTX 或 ODP。

下面的示例假设脚本旁有名为 Sample.odp 的 OpenDocument 演示文稿,并将其保存为 PPTX。

<?php
require_once("http://localhost:8080/JavaBridge/java/Java.inc");
require_once(__DIR__ . "/vendor/aspose/slides/zh/lib/aspose.slides.php");

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation(__DIR__ . "/Sample.odp");
try {
    $presentation->save(__DIR__ . "/OutputPresentation.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

FAQ

我可以将新演示文稿保存为什么格式?

您可以保存为 PPTX、PPT 和 ODP,并导出为 PDF、XPS、HTML、SVG,以及 images,等等。

我可以从模板(POTX/POTM)开始并保存为普通 PPTX 吗?

可以。加载模板后保存为所需格式;POTX/POTM/PPTM 等类似格式 are supported。

创建演示文稿时如何控制幻灯片尺寸/宽高比?

设置 slide size(包括 4:3、16:9 等预设或自定义尺寸),并选择内容的缩放方式。

尺寸和坐标使用什么单位?

使用点(point)作为单位:1 英寸等于 72 点。

如何处理包含大量媒体文件的超大演示文稿以降低内存使用?

使用 BLOB management strategies,通过临时文件限制内存存储,并优先使用基于文件的工作流而非纯内存流。

我可以并行创建/保存演示文稿吗?

不能在 multiple threads 中操作同一个 Presentation 实例。请为每个线程或进程运行独立的实例。

如何去除试用水印和限制?

在每个进程中 Apply a license。许可证 XML 必须保持未修改,且在多线程情况下应同步许可证设置。

我可以对创建的 PPTX 进行数字签名吗?

可以。演示文稿支持 Digital signatures(添加和验证)。

创建的演示文稿是否支持宏(VBA)?

支持。您可以 create/edit VBA projects 并保存为支持宏的文件,如 PPTM/PPSM。