在 Android 上高效合并演示文稿

演示文稿合并

当您将一个演示文稿合并到另一个时,实际上是将它们的幻灯片合并到一个演示文稿中,从而得到一个文件。

可以合并的内容

使用 Aspose.Slides,您可以合并

  • 整个演示文稿。所有演示文稿中的幻灯片合并到一个演示文稿中
  • 指定幻灯片。选定的幻灯片合并到一个演示文稿中
  • 同一格式的演示文稿(如 PPT 到 PPT、PPTX 到 PPTX 等)以及不同格式的演示文稿(如 PPT 到 PPTX、PPTX 到 ODP 等)相互合并。

合并选项

您可以应用以下选项来决定是否

  • 输出演示文稿中的每一张幻灯片保留唯一的样式
  • 为输出演示文稿中的所有幻灯片使用相同的样式。

要合并演示文稿,Aspose.Slides 提供了来自 ISlideCollection 接口的 AddClone 方法。有几种 AddClone 方法的实现,用于定义演示文稿合并过程的参数。每个 Presentation 对象都有一个 Slides 集合,因此您可以在要合并幻灯片的演示文稿上调用 AddClone 方法。

AddClone 方法返回一个 ISlide 对象,即源幻灯片的克隆。输出演示文稿中的幻灯片只是源幻灯片的副本。因此,您可以对生成的幻灯片进行更改(例如,应用样式、格式选项或布局),而无需担心源演示文稿受到影响。

合并演示文稿

Aspose.Slides 提供了 AddClone(ISlide) 方法,允许您在保持幻灯片布局和样式(默认参数)的情况下合并幻灯片。

此 Java 代码演示了如何合并演示文稿:

Presentation pres1 = new Presentation("pres1.pptx");
try {
    Presentation pres2 = new Presentation("pres2.pptx");
    try {
        for(ISlide slide : pres2.getSlides())
        {
            pres1.getSlides().addClone(slide);
        }
    } finally {
        if (pres2 != null) pres2.dispose();
    }
    pres1.save("combined.pptx", SaveFormat.Pptx);
} finally {
    if (pres1 != null) pres1.dispose();
}

使用母版幻灯片合并演示文稿

Aspose.Slides 提供了 AddClone(ISlide, IMasterSlide, boolean) 方法,允许您在应用幻灯片母版模板的同时合并幻灯片。这样,如果需要,您可以更改输出演示文稿中幻灯片的样式。

以下 Java 代码演示了上述操作:

Presentation pres1 = new Presentation("pres1.pptx");
try {
    Presentation pres2 = new Presentation("pres2.pptx");
    try {
        for(ISlide slide : pres2.getSlides())
        {
            pres1.getSlides().addClone(slide, pres2.getMasters().get_Item(0), true);
        }
    } finally {
        if (pres2 != null) pres2.dispose();
    }
    pres1.save("combined.pptx", SaveFormat.Pptx);
} finally {
    if (pres1 != null) pres1.dispose();
}

如果您希望输出演示文稿中的幻灯片使用不同的幻灯片布局,请在合并时改用 AddClone(ISlide, ILayoutSlide) 方法。

从演示文稿中合并特定幻灯片

从多个演示文稿中合并特定幻灯片对于创建自定义幻灯片组非常有用。Aspose.Slides for Android via Java 允许您选择并导入所需的幻灯片。API 能够保留原始幻灯片的格式、布局和设计。

以下 Java 代码创建一个新演示文稿,从另外两个演示文稿中添加标题幻灯片,并将结果保存为文件:

Presentation presentation = new Presentation();
Presentation presentation1 = new Presentation("presentation1.pptx");
Presentation presentation2 = new Presentation("presentation2.pptx");
try {
    presentation.getSlides().removeAt(0);
    
    ISlide slide1 = getTitleSlide(presentation1);

    if (slide1 != null)
        presentation.getSlides().addClone(slide1);

    ISlide slide2 = getTitleSlide(presentation2);

    if (slide2 != null)
        presentation.getSlides().addClone(slide2);

    presentation.save("combined.pptx", SaveFormat.Pptx);
} finally {
    presentation2.dispose();
    presentation1.dispose();
    presentation.dispose();
}
static ISlide getTitleSlide(IPresentation presentation) {
    for (ISlide slide : presentation.getSlides()) {
        if (slide.getLayoutSlide().getLayoutType() == SlideLayoutType.Title) {
            return slide;
        }
    }
    return null;
}

使用幻灯片布局合并演示文稿

此 Java 代码展示了如何在合并演示文稿的幻灯片时应用您首选的幻灯片布局,以获得一个输出演示文稿:

Presentation pres1 = new Presentation("pres1.pptx");
try {
    Presentation pres2 = new Presentation("pres2.pptx");
    try {
        for(ISlide slide : pres2.getSlides())
        {
            pres1.getSlides().addClone(slide, pres2.getLayoutSlides().get_Item(0));
        }
    } finally {
        if (pres2 != null) pres2.dispose();
    }
    pres1.save("combined.pptx", SaveFormat.Pptx);
} finally {
    if (pres1 != null) pres1.dispose();
}

使用不同幻灯片尺寸合并演示文稿

要合并两个尺寸不同的演示文稿,必须调整其中一个演示文稿的尺寸,使其与另一个演示文稿的尺寸匹配。

以下示例代码演示了上述操作:

Presentation pres1 = new Presentation("pres1.pptx");
try {
    Presentation pres2 = new Presentation("pres2.pptx");
    try {
        pres2.getSlideSize().setSize((float)pres1.getSlideSize().getSize().getWidth(), (float)pres1.getSlideSize().getSize().getHeight(), SlideSizeScaleType.EnsureFit);

        for(ISlide slide : pres2.getSlides())
        {
            pres1.getSlides().addClone(slide);
        }
    } finally {
        if (pres2 != null) pres2.dispose();
    }
    pres1.save("combined.pptx", SaveFormat.Pptx);
} finally {
    if (pres1 != null) pres1.dispose();
}

将幻灯片合并到演示文稿章节

以下 Java 代码展示了如何将特定幻灯片合并到演示文稿的某个章节:

Presentation pres1 = new Presentation("pres1.pptx");
try {
    Presentation pres2 = new Presentation("pres2.pptx");
    try {
        for(ISlide slide : pres2.getSlides())
        {
            pres1.getSlides().addClone(slide, pres1.getSections().get_Item(0));
        }
    } finally {
        if (pres2 != null) pres2.dispose();
    }
    pres1.save("combined.pptx", SaveFormat.Pptx);
} finally {
    if (pres1 != null) pres1.dispose();
}

该幻灯片会被添加到该章节的末尾。

常见问题

合并演示文稿时对幻灯片数量有任何限制吗?

没有严格的限制。Aspose.Slides 能够处理大型文件,但性能取决于文件大小和系统资源。对于非常大的演示文稿,建议使用 64 位 JVM 并分配足够的堆内存。

我可以合并包含嵌入式视频或音频的演示文稿吗?

可以,Aspose.Slides 会保留幻灯片中嵌入的多媒体内容,但最终的演示文稿可能会显著增大。

合并演示文稿时字体会被保留吗?

会。只要系统已安装或在源演示文稿中 已嵌入,来源演示文稿使用的字体将在输出文件中得到保留。