在 PHP 中访问演示文稿幻灯片
Aspose.Slides 允许您以两种方式访问幻灯片:按索引和按 ID。
按索引访问幻灯片
演示文稿中的所有幻灯片都根据幻灯片位置按数字顺序排列,起始位置为 0。第一张幻灯片可通过索引 0 访问;第二张幻灯片通过索引 1 访问;依此类推。
表示演示文稿文件的 Presentation 类将所有幻灯片公开为一个 SlideCollection(Slide 对象的集合)。以下 PHP 代码展示了如何通过索引访问幻灯片:
# 实例化一个表示演示文稿文件的 Presentation 对象
$pres = new Presentation("demo.pptx");
try {
# 通过幻灯片索引访问幻灯片
$slide = $pres->getSlides()->get_Item(0);
} finally {
$pres->dispose();
}
按 ID 访问幻灯片
演示文稿中的每张幻灯片都有唯一的 ID。您可以使用 Presentation 类公开的 getSlideById 方法定位该 ID。以下 PHP 代码展示了如何提供有效的幻灯片 ID 并通过 getSlideById 方法访问该幻灯片:
# 实例化一个表示演示文稿文件的 Presentation 对象
$pres = new Presentation("demo.pptx");
try {
# 获取幻灯片 ID
$id = $pres->getSlides()->get_Item(0)->getSlideId();
# 通过其 ID 访问幻灯片
$slide = $pres->getSlideById($id);
} finally {
$pres->dispose();
}
更改幻灯片位置
Aspose.Slides 允许您更改幻灯片的位置。例如,您可以指定将第一张幻灯片变为第二张幻灯片。
- 创建一个 Presentation 类的实例。
- 通过索引获取要更改位置的幻灯片引用。
- 使用 setSlideNumber 方法为该幻灯片设置新位置。
- 保存修改后的演示文稿。
以下 PHP 代码演示了将位置 1 的幻灯片移动到位置 2 的操作:
# 实例化一个表示演示文稿文件的 Presentation 对象
$pres = new Presentation("Presentation.pptx");
try {
# 获取将要更改位置的幻灯片
$sld = $pres->getSlides()->get_Item(0);
# 为幻灯片设置新位置
$sld->setSlideNumber(2);
# 保存已修改的演示文稿
$pres->save("helloworld_Pos.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
第一张幻灯片变成了第二张;第二张幻灯片变成了第一张。更改幻灯片位置时,其他幻灯片会自动调整。
设置幻灯片编号
使用由 Presentation 类公开的 setFirstSlideNumber 方法,您可以为演示文稿的第一张幻灯片指定一个新的编号。此操作会重新计算其他幻灯片的编号。
- 创建一个 Presentation 类的实例。
- 获取幻灯片编号。
- 设置幻灯片编号。
- 保存修改后的演示文稿。
以下 PHP 代码演示了将第一张幻灯片的编号设置为 10 的操作:
# 实例化一个表示演示文稿文件的 Presentation 对象
$pres = new Presentation("HelloWorld.pptx");
try {
# 获取幻灯片编号
$firstSlideNumber = $pres->getFirstSlideNumber();
# 设置幻灯片编号
$pres->setFirstSlideNumber(10);
# 保存已修改的演示文稿
$pres->save("Set_Slide_Number_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
如果您想跳过第一张幻灯片,也可以从第二张幻灯片开始编号(并隐藏第一张幻灯片的编号),方式如下:
$presentation = new Presentation();
try {
$layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
$presentation->getSlides()->addEmptySlide($layoutSlide);
$presentation->getSlides()->addEmptySlide($layoutSlide);
$presentation->getSlides()->addEmptySlide($layoutSlide);
# 设置第一张演示文稿幻灯片的编号
$presentation->setFirstSlideNumber(0);
# 显示所有幻灯片的幻灯片编号
$presentation->getHeaderFooterManager()->setAllSlideNumbersVisibility(true);
# 隐藏第一张幻灯片的幻灯片编号
$presentation->getSlides()->get_Item(0)->getHeaderFooterManager()->setSlideNumberVisibility(false);
# 保存已修改的演示文稿
$presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
FAQ
用户看到的幻灯片编号是否与集合的零基索引匹配?
幻灯片上显示的编号可以从任意值开始(例如 10),不必与索引匹配;其关系由演示文稿的 first slide number 设置控制。
隐藏的幻灯片会影响索引吗?
会。隐藏的幻灯片仍然保留在集合中并计入索引;“隐藏”指的是显示状态,而非其在集合中的位置。
当添加或删除其他幻灯片时,幻灯片的索引会改变吗?
会。索引始终反映当前的幻灯片顺序,并在插入、删除和移动操作后重新计算。