Android 上的低代码演示文稿操作

概览

com.aspose.slides 包提供了用于常见演示文稿操作的静态帮助类。这些帮助类将常用的对象模型工作流封装在专注的方法中,使您能够以更少的代码完成文件转换或合并、处理演示文稿元素、收集形状以及移除未使用的内容。

当操作适用于整个文件或演示文稿且默认工作流满足需求时,低代码帮助类最为有用。需要对单个幻灯片、母版、布局、形状、导出设置或演示文稿元素之间的关系进行细粒度控制时,请使用完整的 Aspose.Slides object model

以下表格概述了可用的帮助类:

辅助类 使用场景
Convert 通过直接的文件到文件调用将演示文稿转换为其他格式。
Merger 合并相同格式的完整演示文稿文件。
ForEach 对每个幻灯片、形状、段落或文本片段执行操作。
Collect 从整个演示文稿中检索形状,以便重复处理或分析。
Compress 删除未使用的母版和布局并减少嵌入字体数据。

转换演示文稿

当输出文件扩展名足以选择导出格式时,请使用 Convert.autoByExtension。该方法打开源演示文稿,从输出路径确定所需格式,并写入结果。

import com.aspose.slides.Convert;

Convert.autoByExtension("input.pptx", "output.pdf");

Convert 类还提供针对 PDF、SVG、JPEG、PNG 和 TIFF 的专用输出方法。需要在导出前检查或修改演示文稿,或配置帮助类未公开的导出选项时,请使用完整的对象模型。有关特定格式的工作流和选项,请参阅 Convert Presentation

合并演示文稿

使用 Merger.process 可以一次调用合并完整的演示文稿文件。输入的演示文稿必须具有相同的文件格式。

import com.aspose.slides.Merger;

String[] inputFiles = { "part-1.pptx", "part-2.pptx" };
Merger.process(inputFiles, "merged.pptx");

当所有幻灯片都应追加到一个结果中且不需要单独选择或重新映射时,此帮助类非常合适。需要合并选定的幻灯片、应用目标母版或布局、显式保留节,或调和不同的幻灯片尺寸时,请使用完整的对象模型。有关这些场景,请参阅 Merge Presentations

遍历演示文稿元素

ForEach 类为每种请求的演示文稿元素类型调用回调。它避免了嵌套的集合循环,便于对整个演示文稿进行检查或格式更改。

以下示例使用 ForEach.slideForEach.shapeForEach.paragraph、以及 ForEach.portion 来检查相应的元素:

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    ForEach.slide(presentation, (slide, index) -> {
        System.out.println(String.format("Slide %d: %d shapes", index, slide.getShapes().size()));
    });

    ForEach.shape(presentation, (shape, slide, index) -> {
        System.out.println(String.format("Shape %d on %s: %s", index, slide.getClass().getSimpleName(), shape.getName()));
    });

    ForEach.paragraph(presentation, (paragraph, slide, index) -> {
        System.out.println(String.format("Paragraph %d on %s: %s", index, slide.getClass().getSimpleName(), paragraph.getText()));
    });

    ForEach.portion(presentation, (portion, paragraph, slide, index) -> {
        System.out.println(String.format("Portion %d on %s: %s", index, slide.getClass().getSimpleName(), portion.getText()));
    });
} finally {
    presentation.dispose();
}

默认情况下,跨整个演示文稿的形状和文本遍历会包含普通、母版和布局幻灯片。带有 includeNotes 参数的重载还可以处理备注幻灯片。当遍历顺序、提前退出、在回调调用前过滤或需要详细的父子控制很重要时,请使用直接的集合循环。

收集形状

当您需要获取演示文稿中所有形状的集合,而不是对每个形状使用回调时,请使用 Collect.shapes。这在需要对同一组形状进行多次过滤、计数或处理时非常有用。

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    Iterable<Shape> shapes = Collect.shapes(presentation);

    for (Shape shape : shapes) {
        System.out.println(String.format("%s: %s", shape.getName(), shape.getClass().getSimpleName()));
    }
} finally {
    presentation.dispose();
}

如果每个形状可以立即处理且不需要保留收集结果,请改用 ForEach.shape

压缩演示文稿内容

Compress 类可以删除未使用的结构元素并减少嵌入的字体数据:

import com.aspose.slides.*;

Presentation presentation = new Presentation("input.pptx");
try {
    Compress.removeUnusedLayoutSlides(presentation);
    Compress.removeUnusedMasterSlides(presentation);
    Compress.compressEmbeddedFonts(presentation);

    presentation.save("compressed.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

先移除未使用的布局,再移除未使用的母版,这样在布局清理后变为未引用的母版也能被删除。如果以后可能需要原始的母版、布局或完整的嵌入字体数据,请将优化后的演示文稿保存为新文件。更多细节请参阅 Slide MasterEmbedded Font

常见问题

何时应使用低代码 API 而不是完整对象模型?
当标准操作适用于完整文件或演示文稿且不需要对单个元素进行细致控制时,请使用低代码帮助类。需要选择特定幻灯片、控制母版和布局关系、检查中间状态或配置帮助类未公开的行为时,请使用完整对象模型。

Merger 能够合并不同文件格式的演示文稿吗?
不能。Merger.process 要求输入演示文稿使用相同格式。请先使用例如 Convert.autoByExtension 将输入文件转换为统一格式,然后再合并已转换的文件。

ForEach 是否处理母版、布局和备注幻灯片?
ForEach.slide 只遍历普通演示幻灯片。跨整个演示文稿的 ForEach.shapeForEach.paragraphForEach.portion 默认包括普通、母版和布局幻灯片。使用带有 includeNotes 参数并设置为 true 的重载可以包含备注幻灯片。

ForEach.shape 与 Collect.shapes 有何区别?
使用 ForEach.shape 可以通过回调立即处理每个形状。使用 Collect.shapes 则会得到一个可迭代的结果,您可以保留、过滤、计数或多次遍历该集合。

Compress 总是会让演示文稿文件变小吗?
不一定。结果取决于演示文稿是否包含未使用的布局、未使用的母版或带有未使用字符的嵌入字体。如果这些情况都不存在,对应的 Compress 操作可能不会减小文件大小。

ForEach 或 Compress 所做的更改会自动保存吗?
不会。这些帮助类在内存中的 Presentation 对象上工作。 在 ForEach 回调或运行 Compress 后,需调用 Presentation.save 将结果写入文件。

相关文档