在 Android 上管理演示文稿中的 SmartArt 图形

创建 SmartArt 形状

Aspose.Slides for Android via Java 提供了用于创建 SmartArt 形状的 API。要在幻灯片中创建 SmartArt 形状,请按照以下步骤操作:

  1. 创建 Presentation 类的实例。
  2. 通过使用其索引获取幻灯片的引用。
  3. 通过设置它的 LayoutTypeAdd a SmartArt shape
  4. 将修改后的演示文稿另存为 PPTX 文件。
// 实例化 Presentation 类
Presentation pres = new Presentation();
try {
    // 获取第一张幻灯片
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 添加 SmartArt 形状
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.BasicBlockList);
    
    // 保存演示文稿
    pres.save("SimpleSmartArt.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
todo:image_alt_text
图:已添加到幻灯片的 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 形状时设置,无法更改。

  1. 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
  2. 通过使用其索引获取第一张幻灯片的引用。
  3. 遍历第一张幻灯片中的每个形状。
  4. 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
  5. 检查具有特定 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 形状更改快速样式。

  1. 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
  2. 通过使用其索引获取第一张幻灯片的引用。
  3. 遍历第一张幻灯片中的每个形状。
  4. 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
  5. 查找具有特定 Style 的 SmartArt 形状。
  6. 为 SmartArt 形状设置新的 Style。
  7. 保存演示文稿。
// 实例化 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();
}
todo:image_alt_text
图:已更改样式的 SmartArt 形状

更改 SmartArt 形状颜色样式

在本例中,我们将学习为任意 SmartArt 形状更改颜色样式。以下示例代码将访问具有特定颜色样式的 SmartArt 形状并更改其样式。

  1. 创建 Presentation 类的实例并加载包含 SmartArt 形状的演示文稿。
  2. 通过使用其索引获取第一张幻灯片的引用。
  3. 遍历第一张幻灯片中的每个形状。
  4. 检查形状是否为 SmartArt 类型,如果是 SmartArt,则将选定的形状强制转换为 SmartArt。
  5. 查找具有特定 Color Style 的 SmartArt 形状。
  6. 为 SmartArt 形状设置新的 Color Style。
  7. 保存演示文稿。
// 实例化 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();
}
todo:image_alt_text
图:已更改颜色样式的 SmartArt 形状

FAQ

我可以将 SmartArt 作为单个对象进行动画处理吗?

可以。SmartArt 是一种形状,因此您可以像对其他形状一样,通过动画 API(进入、退出、强调、运动路径)应用标准动画

如果不知道内部 ID,如何在幻灯片上找到特定的 SmartArt?

设置并使用替代文本(AltText),然后按该值搜索形状——这是定位目标形状的推荐方法。

我可以将 SmartArt 与其他形状组合吗?

可以。您可以将 SmartArt 与其他形状(图片、表格等)进行组合,然后操作该组合

如何获取特定 SmartArt 的图像(例如用于预览或报告)?

导出形状的缩略图/图像;该库能够将单个形状渲染为光栅文件(PNG/JPG/TIFF)。

将整个演示文稿转换为 PDF 时,SmartArt 的外观是否会保持?

会。渲染引擎针对PDF 导出实现高保真,并提供多种质量和兼容性选项。