Hatékonyan egyesítse a prezentációkat C++-ban

Áttekintés

Az Aspose.Slides lehetővé teszi a prezentációk egyesítését úgy, hogy diák másolatát egy prezentációból a másikba helyezi. Ez a cikk bemutatja, hogyan lehet egyesíteni teljes prezentációkat vagy kiválasztott diákat, hogyan lehet egy dia master‑t vagy egy meghatározott elrendezést használni az egyesítés során, hogyan kezelhetők a különböző dia méretű prezentációk, és hogyan adhatók az egyesített diák egy prezentáció szekciójához. Emellett gyakorlati megjegyzéseket is tartalmaz az egyesített tartalommal kapcsolatban, beleértve a jegyzeteket, megjegyzéseket, jelszóval védett forrásfájlokat és a szálhasználatot.

Prezentációk egyesítése

Amikor egy prezentációt egy másikba egyesít, gyakorlatilag a diák egyetlen prezentációban kerülnek össze, így egyetlen fájlt kapunk.

Mi lehet egyesíteni

Az Aspose.Slides segítségével egyesíthet:

  • teljes prezentációkat. Az összes dia a prezentációkból egy prezentációba kerül
  • meghatározott diákat. A kiválasztott diák egy prezentációba kerülnek
  • prezentációkat egy formátumban (PPT‑t PPT‑be, PPTX‑t PPTX‑be stb.) és különböző formátumokban (PPT‑t PPTX‑be, PPTX‑t ODP‑be stb.) egymásba.

Egyesítési beállítások

Alkalmazhat beállításokat, amelyek meghatározzák, hogy

  • minden dia az eredmény‑prezentációban egyedi stílust kapjon
  • egy meghatározott stílus legyen használva az összes dián az eredmény‑prezentációban.

Az prezentációk egyesítéséhez az Aspose.Slides a AddClone metódusokat (az ISlideCollection interfészből) biztosítja. Számos AddClone metódusmegvalósítás létezik, amelyek a prezentációk egyesítési folyamatának paramétereit határozzák meg. Minden Presentation objektumnak van egy Slides gyűjteménye, így a kívánt prezentációból hívhatja a AddClone metódust.

A AddClone metódus egy ISlide objektumot ad vissza, amely a forrásdia klónja. A kimeneti prezentáció diái egyszerűen a forrásdiák másolatai. Ezért a létrejött diákon (például stílusok, formázási opciók vagy elrendezések alkalmazása) változtatásokat végezhet anélkül, hogy a forrás‑prezentációk érintettek lennének.

Prezentációk egyesítése

Az Aspose.Slides a AddClone (ISlide) metódust biztosítja, amely lehetővé teszi a diák egyesítését úgy, hogy a diák megtartják saját elrendezésüket és stílusukat (alapértelmezett paraméterek).

Ez a C++ kód bemutatja a prezentációk egyesítését:

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

Prezentációk egyesítése dia masterrel

Az Aspose.Slides a AddClone (ISlide, IMasterSlide, bool) metódust biztosítja, amely lehetővé teszi a diák egyesítését, miközben egy dia‑master sablont alkalmaz. Így szükség esetén a kimeneti prezentáció diáinak stílusát módosíthatja.

Ez a C++ kód bemutatja a leírt műveletet:

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

Ha azt szeretné, hogy a kimeneti prezentáció diái egy másik elrendezést kapjanak, használja a AddClone (ISlide, ILayoutSlide) metódust az egyesítés során.

Specifikus diák egyesítése prezentációkból

Több prezentációból származó specifikus diák egyesítése hasznos egyedi diakészletek létrehozásához. Az Aspose.Slides C++ lehetővé teszi, hogy csak a szükséges diákot válassza ki és importálja. Az API megőrzi az eredeti diák formázását, elrendezését és megjelenését.

Az alábbi C++ kód új prezentációt hoz létre, hozzáadja a címdiákat két másik prezentációból, és elmenti az eredményt egy fájlba:

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

Prezentációk egyesítése dia elrendezéssel

Ez a C++ kód bemutatja, hogyan lehet a diákot prezentációkból egyesíteni úgy, hogy az Ön által preferált dia‑elrendezést alkalmazza, és egyetlen kimeneti prezentációt kapjon:

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

Prezentációk egyesítése eltérő dia méretekkel

Két, különböző dia mérettel rendelkező prezentáció egyesítéséhez az egyik prezentáció méretét át kell méretezni, hogy megegyezzen a másikéval.

Ez a minta kód szemlélteti a leírt műveletet:

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

Diák egyesítése prezentáció szekciójába

Ez a C++ kód bemutatja, hogyan lehet egy specifikus diát egy szekcióba egyesíteni egy prezentációban:

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

A dia a szekció végén kerül hozzáadásra.

GYIK

Megmaradnak a jegyzetek az egyesítés során?
Igen. A diák klónozása során az Aspose.Slides minden diaelemet átvisz, beleértve a jegyzeteket, formázást és animációkat.

A megjegyzések és szerzőik átkerülnek?
A megjegyzések, mint a dia tartalmának részét képező elemek, a diával együtt másolódnak. A szerzői címkék megmaradnak a megjegyzésobjektumokként a létrehozott prezentációban.

Mi van, ha a forrás‑prezentáció jelszóval védett?
Ahol a forrás‑prezentáció jelszóval védett, azt jelszóval kell megnyitni a LoadOptions::set_Password használatával; a betöltés után a diák biztonságosan klónozhatók egy nem védett célfájlba (vagy egy védett fájlba is).

Mennyire szálbiztos az egyesítési művelet?
Ne használja ugyanazt a Presentation példányt több szálból. Az ajánlott szabály: „egy dokumentum – egy szál”; különböző fájlok párhuzamosan feldolgozhatók külön szálakon.