Effektivt slå samman presentationer i C++

Översikt

Aspose.Slides låter dig slå samman presentationer genom att klona bilder från en presentation till en annan. Den här artikeln förklarar hur du slår samman hela presentationer eller utvalda bilder, använder en bildbakgrund eller en specifik layout under sammanslagningen, hanterar presentationer med olika bildstorlekar och lägger till sammanslagna bilder i ett presentationsavsnitt. Den täcker också praktiska anteckningar relaterade till sammanslaget innehåll, inklusive talarnoter, kommentarer, lösenordsskyddade källfiler och trådanvändning.

Sammanslagning av presentationer

När du slår samman en presentation med en annan kombinerar du i praktiken deras bilder i en enda presentation för att få en fil.

Vad kan slås samman

Med Aspose.Slides kan du slå ihop

  • hela presentationer. Alla bilder från presentationerna hamnar i en enda presentation
  • specifika bilder. Utvalda bilder hamnar i en enda presentation
  • presentationer i ett format (PPT till PPT, PPTX till PPTX, etc) och i olika format (PPT till PPTX, PPTX till ODP, etc) till varandra.

Sammanslagningsalternativ

Du kan använda alternativ som bestämmer om

  • varje bild i resultatpresentationen behåller en unik stil
  • en specifik stil används för alla bilder i resultatpresentationen.

För att slå samman presentationer tillhandahåller Aspose.Slides AddClone‑metoder (från ISlideCollection‑gränssnittet). Det finns flera implementationer av AddClone‑metoderna som definierar parametrarna för presentationssammanfogningsprocessen. Varje Presentation‑objekt har en Slides‑samling, så du kan anropa en AddClone‑metod från den presentation du vill slå samman bilder till.

AddClone‑metoden returnerar ett ISlide‑objekt, vilket är en klon av källbilden. Bilderna i en resultatpresentation är helt enkelt en kopia av bilderna från källan. Därför kan du göra ändringar i de resulterande bilderna (t.ex. tillämpa stilar eller formateringsalternativ eller layouter) utan att oroa dig för att källpresentationerna påverkas.

Slå samman presentationer

Aspose.Slides tillhandahåller metoden AddClone (ISlide) som låter dig kombinera bilder medan bilderna behåller sina layouter och stilar (standardparametrar).

Denna C++‑kod visar hur du slår samman presentationer:

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

Slå samman presentationer med en bildbakgrund

Aspose.Slides tillhandahåller metoden AddClone (ISlide, IMasterSlide, bool) som låter dig kombinera bilder medan du använder en bildbakgrundsmall för presentationen. På så sätt kan du, om det behövs, ändra stilen för bilderna i resultatpresentationen.

Denna C++‑kod demonstrerar den beskrivna operationen:

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

Om du vill att bilderna i resultatpresentationen ska ha en annan bildlayout, använd istället metoden AddClone (ISlide, ILayoutSlide) vid sammanslagning.

Slå samman specifika bilder från presentationer

Att slå samman specifika bilder från flera presentationer är användbart för att skapa anpassade bildspel. Aspose.Slides C++ låter dig välja och importera bara de bilder du behöver. API‑et bevarar formatering, layout och design på de ursprungliga bilderna.

Följande C++‑kod skapar en ny presentation, lägger till titelföredrag från två andra presentationer och sparar resultatet till en fil:

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

Slå samman presentationer med en bildlayout

Denna C++‑kod visar hur du kombinerar bilder från presentationer samtidigt som du tillämpar din föredragna bildlayout för att få en enda resultatpresentation:

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

Slå samman presentationer med olika bildstorlekar

För att slå samman två presentationer med olika bildstorlekar måste du ändra storleken på den ena presentationen så att den matchar den andra.

Denna exempel­kod demonstrerar den beskrivna operationen:

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

Slå samman bilder till ett presentationsavsnitt

Denna C++‑kod visar hur du slår samman en specifik bild till ett avsnitt i en presentation:

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

Bilden läggs till i slutet av avsnittet.

FAQ

Behålls talarnoter vid sammanslagning?

Ja. När du klonar bilder tar Aspose.Slides med alla bildelement, inklusive noteringar, formatering och animationer.

Överförs kommentarer och deras författare?

Kommentarer, som en del av bildinnehållet, kopieras med bilden. Kommentarförfattarnas etiketter bevaras som kommentarobjekt i den resulterande presentationen.

Vad händer om källpresentationen är lösenordsskyddad?

Den måste öppnas med lösenordet via LoadOptions::set_Password; efter inläsning kan dessa bilder säkert klonas till en icke‑skyddad målfil (eller även en skyddad).

Hur trådsäker är sammanslagningsoperationen?

Använd inte samma Presentation‑instans från flera trådar. Den rekommenderade regeln är “ett dokument — en tråd”; olika filer kan bearbetas parallellt i separata trådar.