使用 Java 管理演示文稿中的 SmartArt 图形
创建 SmartArt 形状
Aspose.Slides for Java 提供了用于创建 SmartArt 形状的 API。要在幻灯片中创建 SmartArt 形状,请按照以下步骤操作:
- 创建 Presentation 类的实例。
- 使用索引获取幻灯片的引用。
- 通过设置它的 LayoutType 来 Add a SmartArt shape。
- 将修改后的演示文稿保存为 PPTX 文件。
// 实例化 Presentation 类
Presentation pres = new Presentation();
try {
// 获取第一张幻灯片
ISlide slide = pres.getSlides().get_Item(0);
// 添加 Smart Art 形状
ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.BasicBlockList);
// 保存演示文稿
pres.save("SimpleSmartArt.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
![]() |
|---|
| 图:已添加到幻灯片的 SmartArt 形状 |
访问幻灯片上的 SmartArt 形状
以下代码用于访问已添加到演示文稿幻灯片中的 SmartArt 形状。在示例代码中,我们将遍历幻灯片中的每个形状并检查它是否是 SmartArt 形状。如果形状的类型是 SmartArt,则我们会将其强制转换为 SmartArt 实例。
// 加载所需的演示文稿
Presentation pres = new Presentation("AccessSmartArtShape.pptx");
try {
// 遍历第一张幻灯片中的每个形状
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// 检查形状是否为 SmartArt 类型
if (shape instanceof ISmartArt)
{
// 将形状强制转换为 SmartArtEx
ISmartArt smart = (ISmartArt)shape;
System.out.println("Shape Name:" + smart.getName());
}
}
} finally {
if (pres != null) pres.dispose();
}
使用特定布局类型访问 SmartArt 形状
以下示例代码可帮助访问具有特定 LayoutType 的 SmartArt 形状。请注意,SmartArt 的 LayoutType 是只读的,且只能在添加 SmartArt 形状时设置,之后无法更改。
- 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
- 使用索引获取第一张幻灯片的引用。
- 遍历第一张幻灯片中的所有形状。
- 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
- 检查具有特定 LayoutType 的 SmartArt 形状,并在之后执行所需的操作。
Presentation pres = new Presentation("AccessSmartArtShape.pptx");
try {
// 遍历第一张幻灯片中的每个形状
for (IShape shape : pres.getSlides().get_Item(0).getShapes())
{
// 检查形状是否为 SmartArt 类型
if (shape instanceof ISmartArt)
{
// 将形状强制转换为 SmartArtEx
ISmartArt smart = (ISmartArt) shape;
// 检查 SmartArt 布局
if (smart.getLayout() == SmartArtLayoutType.BasicBlockList)
{
System.out.println("Do some thing here....");
}
}
}
} finally {
if (pres != null) pres.dispose();
}
更改 SmartArt 形状样式
在本例中,我们将学习如何更改任意 SmartArt 形状的快速样式。
- 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
- 使用索引获取第一张幻灯片的引用。
- 遍历第一张幻灯片中的所有形状。
- 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
- 查找具有特定 Style 的 SmartArt 形状。
- 为该 SmartArt 形状设置新的 Style。
- 保存演示文稿。
// 实例化 Presentation 类
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
// 获取第一张幻灯片
ISlide slide = pres.getSlides().get_Item(0);
// 遍历第一张幻灯片中的每个形状
for (IShape shape : slide.getShapes())
{
// 检查形状是否为 SmartArt 类型
if (shape instanceof ISmartArt)
{
// 将形状强制转换为 SmartArtEx
ISmartArt smart = (ISmartArt) shape;
// 检查 SmartArt 样式
if (smart.getQuickStyle() == SmartArtQuickStyleType.SimpleFill) {
// 更改 SmartArt 样式
smart.setQuickStyle(SmartArtQuickStyleType.Cartoon);
}
}
}
// 保存演示文稿
pres.save("ChangeSmartArtStyle.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
![]() |
|---|
| 图:已更改 Style 的 SmartArt 形状 |
更改 SmartArt 形状颜色样式
在本例中,我们将学习如何更改任意 SmartArt 形状的颜色样式。在下面的示例代码中,将访问具有特定颜色样式的 SmartArt 形状并更改其样式。
- 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
- 使用索引获取第一张幻灯片的引用。
- 遍历第一张幻灯片中的所有形状。
- 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
- 查找具有特定颜色样式的 SmartArt 形状。
- 为该 SmartArt 形状设置新的颜色样式。
- 保存演示文稿。
// 实例化 Presentation 类
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
// 获取第一张幻灯片
ISlide slide = pres.getSlides().get_Item(0);
// 遍历第一张幻灯片中的每个形状
for (IShape shape : slide.getShapes())
{
// 检查形状是否为 SmartArt 类型
if (shape instanceof ISmartArt)
{
// 将形状强制转换为 SmartArtEx
ISmartArt smart = (ISmartArt) shape;
// 检查 SmartArt 颜色类型
if (smart.getColorStyle() == SmartArtColorType.ColoredFillAccent1) {
// 更改 SmartArt 颜色类型
smart.setColorStyle(SmartArtColorType.ColorfulAccentColors);
}
}
}
// 保存演示文稿
pres.save("ChangeSmartArtColorStyle.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
![]() |
|---|
| 图:已更改颜色样式的 SmartArt 形状 |
FAQ
我可以将 SmartArt 作为单个对象进行动画处理吗?
可以。SmartArt 本身是一个形状,因此您可以像对其他形状一样通过动画 API 应用 standard animations(进入、退出、强调、运动路径)等标准动画。
如果我不知道内部 ID,如何在幻灯片上找到特定的 SmartArt?
设置并使用替代文本(AltText),并通过该值搜索形状——这是定位目标形状的推荐方法。
我可以将 SmartArt 与其他形状分组吗?
可以。您可以将 SmartArt 与其他形状(图片、表格等)分组,然后 manipulate the group。
如何获取特定 SmartArt 的图像(例如用于预览或报告)?
导出该形状的缩略图/图像;库能够将单个形状 render individual shapes 为光栅文件(PNG/JPG/TIFF)。
将整个演示文稿转换为 PDF 时,SmartArt 的外观会被保留吗?
会。渲染引擎在 PDF export 时追求高保真度,并提供多种质量和兼容性选项。

