Efektivně sloučit prezentace v C++

Přehled

Aspose.Slides vám umožňuje sloučit prezentace klonováním snímků z jedné prezentace do druhé. Tento článek vysvětluje, jak sloučit celé prezentace nebo vybrané snímky, použít hlavní snímek nebo konkrétní rozvržení během sloučení, pracovat s prezentacemi s různými velikostmi snímků a přidat sloučené snímky do sekce prezentace. Také pokrývá praktické poznámky související se sloučeným obsahem, včetně poznámek přednášejícího, komentářů, souborů chráněných heslem a používání vláken.

Sloučení prezentací

Když sloučíte jednu prezentaci s jinou, v podstatě kombinujete jejich snímky v jedné prezentaci a získáte jeden soubor.

Co lze sloučit

S Aspose.Slides můžete sloučit

  • celé prezentace. Všechny snímky z prezentací skončí v jedné prezentaci
  • konkrétní snímky. Vybrané snímky skončí v jedné prezentaci
  • prezentace v jednom formátu (PPT na PPT, PPTX na PPTX atd.) i v různých formátech (PPT na PPTX, PPTX na ODP atd.) mezi sebou.

Možnosti sloučení

Můžete použít možnosti, které určují, zda

  • každý snímek ve výstupní prezentaci zachová jedinečný styl
  • pro všechny snímky ve výstupní prezentaci bude použit jeden konkrétní styl.

Pro sloučení prezentací poskytuje Aspose.Slides metody AddClone (z rozhraní ISlideCollection). Existuje několik implementací metod AddClone, které definují parametry procesu sloučení prezentací. Každý objekt Presentation má kolekci Slides, takže můžete zavolat metodu AddClone z prezentace, do které chcete snímky sloučit.

Metoda AddClone vrací objekt ISlide, což je klon zdrojového snímku. Snímky ve výstupní prezentaci jsou jednoduše kopií snímků ze zdroje. Proto můžete měnit výsledné snímky (například aplikovat styly, formátování nebo rozvržení) aniž byste ovlivnili původní prezentace.

Sloučení prezentací

Aspose.Slides poskytuje metodu AddClone (ISlide), která umožňuje kombinovat snímky tak, aby snímky zachovaly svá rozvržení a styly (výchozí parametry).

Tento kód v C++ ukazuje, jak sloučit prezentace:

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);

Sloučení prezentací s hlavním snímkem

Aspose.Slides poskytuje metodu AddClone (ISlide, IMasterSlide, bool), která umožňuje kombinovat snímky při aplikaci šablony hlavního snímku. Tímto způsobem můžete v případě potřeby změnit styl snímků ve výstupní prezentaci.

Tento kód v C++ demonstruje popsanou operaci:

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);

Pokud chcete, aby snímky ve výstupní prezentaci měly jiné rozvržení, použijte při sloučení metodu AddClone (ISlide, ILayoutSlide).

Sloučení konkrétních snímků z prezentací

Sloučení konkrétních snímků z více prezentací je užitečné při tvorbě vlastních balíčků snímků. Aspose.Slides C++ umožňuje vybrat a importovat pouze snímky, které potřebujete. API zachovává formátování, rozvržení i design původních snímků.

Následující kód v C++ vytvoří novou prezentaci, přidá titulní snímky ze dvou dalších prezentací a uloží výsledek do souboru:

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();

Sloučení prezentací s rozvržením snímku

Tento kód v C++ ukazuje, jak kombinovat snímky z prezentací při aplikaci vámi preferovaného rozvržení snímku, abyste získali jednu výstupní prezentaci:

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);

Sloučení prezentací s různými velikostmi snímků

Chcete-li sloučit 2 prezentace s různými velikostmi snímků, musíte velikost jedné z prezentací změnit tak, aby odpovídala velikosti druhé.

Tento ukázkový kód demonstruje popsanou operaci:

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);

Sloučení snímků do sekce prezentace

Tento kód v C++ ukazuje, jak sloučit konkrétní snímek do sekce v prezentaci:

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);

Snímek je přidán na konec sekce.

FAQ

Jsou poznámky přednášejícího zachovány při sloučení?

Ano. Při klonování snímků Aspose.Slides přenáší všechny prvky snímku, včetně poznámek, formátování a animací.

Přenesou se komentáře a jejich autoři?

Komentáře, jako součást obsahu snímku, jsou zkopírovány se snímkem. Štítky autorů komentářů jsou zachovány jako objekty komentářů ve výsledné prezentaci.

Co když je zdrojová prezentace chráněna heslem?

Musí být otevřena s heslem pomocí LoadOptions::set_Password; po načtení lze tyto snímky bezpečně klonovat do nechráněného cílového souboru (nebo také do chráněného).

Jak je operace sloučení bezpečná pro vlákna?

Neužívejte stejnou Presentation instanci z více vláken. Doporučené pravidlo je „jeden dokument — jedno vlákno“; různé soubory lze zpracovávat paralelně v samostatných vláknech.