在 JavaScript 中高效合併簡報

概述

Aspose.Slides 允許您透過從一個簡報中複製投影片到另一個簡報來合併簡報。本文說明如何合併整個簡報或選取的投影片、在合併過程中使用投影片母片或特定版面配置、處理不同投影片尺寸的簡報,以及將合併的投影片加入簡報章節。還涵蓋了與合併內容相關的實用說明,包括演講者備註、評論、受密碼保護的來源檔案以及執行緒使用等。

簡報合併

將一個簡報合併至另一個簡報時,實際上是將它們的投影片結合在同一個簡報中,產生單一檔案。

Aspose.Slides for Node.js via Java,卻允許您以多種方式合併簡報。您可以合併所有形狀、樣式、文字、格式、評論、動畫等,且不必擔心品質或資料遺失。

另請參閱

Clone Slides.

可以合併的項目

使用 Aspose.Slides,您可以合併

  • 整個簡報。所有簡報的投影片最終會匯入同一個簡報
  • 特定投影片。選取的投影片最終會匯入同一個簡報
  • 相同格式的簡報(PPT 轉 PPT、PPTX 轉 PPTX 等)以及不同格式的簡報(PPT 轉 PPTX、PPTX 轉 ODP 等)相互合併。

合併選項

您可以套用以下選項,以決定是否

  • 輸出簡報中的每張投影片保留唯一的樣式
  • 輸出簡報中的所有投影片使用相同的樣式

要合併簡報,Aspose.Slides 提供了來自 SlideCollection 類別的 addClone 方法。addClone 方法有多種實作,讓您可以自訂合併流程的參數。每個 Presentation 物件都有一個 Slides 集合,因此您可以從目標簡報呼叫 addClone 方法以合併投影片。

addClone 方法會回傳一個 Slide 物件,該物件是來源投影片的克隆。輸出簡報中的投影片僅是來源投影片的複製品。因此,您可以對產生的投影片進行變更(例如套用樣式、格式或版面配置),而不會影響來源簡報。

合併簡報

Aspose.Slides 提供了 AddClone(ISlide) 方法,允許您在保留投影片版面與樣式的情況下(預設參數)將投影片合併。

以下 JavaScript 程式碼示範如何合併簡報:

let pres1 = new aspose.slides.Presentation("pres1.pptx");
try {
    let pres2 = new aspose.slides.Presentation("pres2.pptx");
    try {
        for (let i = 0; i < pres2.getSlides().size(); i++) {
            let slide = pres2.getSlides().get_Item(i);
            pres1.getSlides().addClone(slide);
        }
    } finally {
        if (pres2 != null) {
            pres2.dispose();
        }
    }
    pres1.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres1 != null) {
        pres1.dispose();
    }
}

使用投影片母片合併簡報

Aspose.Slides 提供了 AddClone(ISlide, IMasterSlide, boolean) 方法,允許您在套用投影片母片樣板的同時合併投影片。如此一來,若有需要,您可以變更輸出簡報中投影片的樣式。

以下 JavaScript 程式碼示範上述操作:

let pres1 = new aspose.slides.Presentation("pres1.pptx");
try {
    let pres2 = new aspose.slides.Presentation("pres2.pptx");
    try {
        for (let i = 0; i < pres2.getSlides().size(); i++) {
            let slide = pres2.getSlides().get_Item(i);
            pres1.getSlides().addClone(slide, pres2.getMasters().get_Item(0), true);
        }
    } finally {
        if (pres2 != null) {
            pres2.dispose();
        }
    }
    pres1.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres1 != null) {
        pres1.dispose();
    }
}

如果您希望輸出簡報的投影片使用不同的版面配置,合併時請改為使用 addClone(ISlide, ILayoutSlide) 方法。

從簡報合併特定投影片

從多個簡報中挑選特定投影片合併,可用於建立自訂的投影片組合。Aspose.Slides for Node.js via Java 允許您只匯入所需的投影片,且 API 會保留原始投影片的格式、版面與設計。

以下 JavaScript 程式碼建立新簡報,從兩個其他簡報中加入標題投影片,並將結果儲存為檔案:

function getTitleSlide(presentation) {
  for (let i = 0; i < presentation.getSlides().size(); i++) {
    let slide = presentation.getSlides().get_Item(i);
    if (slide.getLayoutSlide().getLayoutType() == aspose.slides.SlideLayoutType.Title) {
      return slide;
    }
  }
  return null;
}
let presentation = new aspose.slides.Presentation();
let presentation1 = new aspose.slides.Presentation("presentation1.pptx");
let presentation2 = new aspose.slides.Presentation("presentation2.pptx");
try {
    presentation.getSlides().removeAt(0);
    
    let slide1 = getTitleSlide(presentation1);

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

    let slide2 = getTitleSlide(presentation2);

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

    presentation.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation2.dispose();
    presentation1.dispose();
    presentation.dispose();
}

使用投影片版面配置合併簡報

以下 JavaScript 程式碼示範如何在合併投影片時套用您偏好的版面配置,進而產生單一輸出簡報:

let pres1 = new aspose.slides.Presentation("pres1.pptx");
try {
    let pres2 = new aspose.slides.Presentation("pres2.pptx");
    try {
        for (let i = 0; i < pres2.getSlides().size(); i++) {
            let slide = pres2.getSlides().get_Item(i);
            pres1.getSlides().addClone(slide, pres2.getLayoutSlides().get_Item(0));
        }
    } finally {
        if (pres2 != null) {
            pres2.dispose();
        }
    }
    pres1.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres1 != null) {
        pres1.dispose();
    }
}

合併不同投影片尺寸的簡報

若要合併兩個投影片尺寸不同的簡報,必須先調整其中一個簡報的尺寸,使其與另一個簡報的尺寸相匹配。

以下範例程式碼示範上述操作:

let pres1 = new aspose.slides.Presentation("pres1.pptx");
try {
    let pres2 = new aspose.slides.Presentation("pres2.pptx");
    try {
        pres2.getSlideSize().setSize(pres1.getSlideSize().getSize().getWidth(), pres1.getSlideSize().getSize().getHeight(), aspose.slides.SlideSizeScaleType.EnsureFit);
        for (let i = 0; i < pres2.getSlides().size(); i++) {
            let slide = pres2.getSlides().get_Item(i);
            pres1.getSlides().addClone(slide);
        }
    } finally {
        if (pres2 != null) {
            pres2.dispose();
        }
    }
    pres1.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres1 != null) {
        pres1.dispose();
    }
}

合併投影片至簡報節

以下 JavaScript 程式碼示範如何將特定投影片合併至簡報中的某個節:

let pres1 = new aspose.slides.Presentation("pres1.pptx");
try {
    let pres2 = new aspose.slides.Presentation("pres2.pptx");
    try {
        for (let i = 0; i < pres2.getSlides().size(); i++) {
            let slide = pres2.getSlides().get_Item(i);
            pres1.getSlides().addClone(slide, pres1.getSections().get_Item(0));
        }
    } finally {
        if (pres2 != null) {
            pres2.dispose();
        }
    }
    pres1.save("combined.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres1 != null) {
        pres1.dispose();
    }
}

該投影片會被加入至該節的末端。

常見問題

合併時是否會保留演講者備註?

會。當複製投影片時,Aspose.Slides 會一起帶入所有投影片元素,包括備註、格式與動畫。

評論及其作者會被轉移嗎?

評論作為投影片內容的一部份,會與投影片一同被複製。評論作者的標籤會以評論物件的形式保留在產生的簡報中。

如果來源簡報受密碼保護怎麼辦?

必須使用 LoadOptions.setPassword 以密碼開啟(請參考 /slides/zh-hant/nodejs-java/password-protected-presentation/),載入後即可安全地將這些投影片克隆至未受保護的目標檔案(或同樣受保護的檔案)。

合併操作的執行緒安全性如何?

不要在 多執行緒 中使用同一個 Presentation 實例。建議的原則是「一個文件 — 一個執行緒」;不同檔案可在各自的執行緒中平行處理。

另請參閱

Aspose 提供 FREE Online Collage Maker。使用此線上服務,您可以合併 JPG to JPG 或 PNG to PNG 圖片、建立 照片格子 等。

請試用 Aspose FREE Online Merger。它允許您在相同格式(例如 PPT 轉 PPT、PPTX 轉 PPTX)或不同格式(例如 PPT 轉 PPTX、PPTX 轉 ODP)之間合併 PowerPoint 簡報。

Aspose FREE Online Merger