Effizientes Zusammenführen von Präsentationen in C++

Präsentationszusammenführung

Wenn Sie eine Präsentation mit einer anderen zusammenführen, kombinieren Sie deren Folien zu einer einzigen Präsentation, um eine Datei zu erhalten.

Was kann zusammengeführt werden

Mit Aspose.Slides können Sie zusammenführen

  • gesamte Präsentationen. Alle Folien aus den Präsentationen landen in einer Präsentation
  • bestimmte Folien. Ausgewählte Folien landen in einer Präsentation
  • Präsentationen in einem Format (PPT zu PPT, PPTX zu PPTX usw.) und in verschiedenen Formaten (PPT zu PPTX, PPTX zu ODP usw.) miteinander.

Zusammenführungsoptionen

Sie können Optionen anwenden, die bestimmen, ob

  • jede Folie in der Ausgabepäsentation einen eindeutigen Stil behält
  • ein bestimmter Stil für alle Folien in der Ausgabepäsentation verwendet wird.

Zum Zusammenführen von Präsentationen stellt Aspose.Slides die AddClone‑Methoden (aus dem ISlideCollection‑Interface) bereit. Es gibt mehrere Implementierungen der AddClone‑Methoden, die die Parameter des Präsentationszusammenführungsprozesses festlegen. Jedes Presentation‑Objekt besitzt eine Slides‑Sammlung, sodass Sie die AddClone‑Methode der Präsentation aufrufen können, in die Sie Folien einfügen möchten.

Die AddClone‑Methode gibt ein ISlide‑Objekt zurück, das ein Klon der Quellfolie ist. Die Folien in einer Ausgabepäsentation sind einfach eine Kopie der Folien aus der Quelle. Daher können Sie die resultierenden Folien ändern (z. B. Stile, Formatierungsoptionen oder Layouts anwenden), ohne dass die Quellpräsentationen beeinflusst werden.

Präsentationen zusammenführen

Aspose.Slides stellt die AddClone (ISlide)‑Methode bereit, mit der Sie Folien kombinieren können, wobei die Folien ihre Layouts und Stile beibehalten (Standardparameter).

Dieser C++‑Code zeigt, wie Sie Präsentationen zusammenführen:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Präsentationen mit einer Folienmaster zusammenführen

Aspose.Slides stellt die AddClone (ISlide, IMasterSlide, bool)‑Methode bereit, mit der Sie Folien kombinieren können, während ein Folienmaster‑Präsentations‑Template angewendet wird. Auf diese Weise können Sie bei Bedarf den Stil für die Folien in der Ausgabepäsentation ändern.

Dieser C++‑Code demonstriert den beschriebenen Vorgang:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_Masters()->idx_get(0), true);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Wenn Sie möchten, dass die Folien in der Ausgabepäsentation ein anderes Folienlayout haben, verwenden Sie stattdessen die AddClone (ISlide, ILayoutSlide)‑Methode beim Zusammenführen.

Spezifische Folien aus Präsentationen zusammenführen

Das Zusammenführen bestimmter Folien aus mehreren Präsentationen ist nützlich, um benutzerdefinierte Foliensätze zu erstellen. Aspose.Slides C++ ermöglicht das Auswählen und Importieren nur der benötigten Folien. Die API bewahrt Formatierung, Layout und Design der Originalfolien.

Der folgende C++‑Code erstellt eine neue Präsentation, fügt Titelfolien aus zwei anderen Präsentationen hinzu und speichert das Ergebnis in einer Datei:

SmartPtr<ISlide> GetTitleSlide(SmartPtr<IPresentation> presentation)
{
    for (auto&& slide : presentation->get_Slides())
    {
        if (slide->get_LayoutSlide()->get_LayoutType() == SlideLayoutType::Title)
        {
            return slide;
        }
    }
    return nullptr;
}
auto presentation = MakeObject<Presentation>();
auto presentation1 = MakeObject<Presentation>(u"presentation1.pptx");
auto presentation2 = MakeObject<Presentation>(u"presentation2.pptx");

presentation->get_Slides()->RemoveAt(0);

auto slide1 = GetTitleSlide(presentation1);

if (slide1 != nullptr)
    presentation->get_Slides()->AddClone(slide1);

auto slide2 = GetTitleSlide(presentation2);

if (slide2 != nullptr)
    presentation->get_Slides()->AddClone(slide2);

presentation->Save(u"combined.pptx", SaveFormat::Pptx);

presentation2->Dispose();
presentation1->Dispose();
presentation->Dispose();

Präsentationen mit einem Folienlayout zusammenführen

Dieser C++‑Code zeigt, wie Sie Folien aus Präsentationen kombinieren, während Sie Ihr bevorzugtes Folienlayout darauf anwenden, um eine Ausgabepäsentation zu erhalten:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide, pres2->get_LayoutSlides()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Präsentationen mit unterschiedlichen Foliengrößen zusammenführen

Um 2 Präsentationen mit unterschiedlichen Foliengrößen zusammenzuführen, müssen Sie eine der Präsentationen so skalieren, dass ihre Größe der der anderen Präsentation entspricht.

Dieser Beispielcode demonstriert den beschriebenen Vorgang:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres1Size = pres1->get_SlideSize()->get_Size();

auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
pres2->get_SlideSize()->SetSize(pres1Size.get_Width(), pres1Size.get_Height(), SlideSizeScaleType::EnsureFit);

for (const auto& slide : pres2->get_Slides())
{
    pres1->get_Slides()->AddClone(slide);
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Folien in einen Präsentationsabschnitt einfügen

Dieser C++‑Code zeigt, wie Sie eine bestimmte Folie in einen Abschnitt einer Präsentation einfügen:

auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (int32_t index = 0; index < pres2->get_Slides()->get_Count(); index++)
{
    auto slide = pres2->get_Slides()->idx_get(index);
    pres1->get_Slides()->AddClone(slide, pres1->get_Sections()->idx_get(0));
}

pres1->Save(u"combined.pptx", SaveFormat::Pptx);

Die Folie wird am Ende des Abschnitts hinzugefügt.

FAQ

Werden Notizen beim Zusammenführen erhalten?

Ja. Beim Klonen von Folien übernimmt Aspose.Slides alle Folienelemente, einschließlich Notizen, Formatierungen und Animationen.

Werden Kommentare und deren Autoren übertragen?

Kommentare, als Teil des Folieninhalts, werden mit der Folie kopiert. Die Autorbezeichnungen der Kommentare bleiben als Kommentarobjekte in der resultierenden Präsentation erhalten.

Was ist, wenn die Quellpräsentation passwortgeschützt ist?

Sie muss mit dem Passwort geöffnet werden über LoadOptions::set_Password; nach dem Laden können diese Folien sicher in eine ungeschützte Zieldatei (oder ebenfalls in eine geschützte) geklont werden.

Wie thread‑sicher ist der Zusammenführungs‑Vorgang?

Verwenden Sie nicht dieselbe Presentation‑Instanz aus mehreren Threads. Die empfohlene Regel lautet „ein Dokument – ein Thread“; verschiedene Dateien können parallel in separaten Threads verarbeitet werden.