دمج العروض التقديمية بكفاءة في C++

دمج العروض التقديمية

عند دمج عرض تقديمي مع آخر، تقوم فعليًا بدمج شرائحه في عرض تقديمي واحد للحصول على ملف واحد.

ما الذي يمكن دمجه

مع Aspose.Slides، يمكنك دمج

  • العروض الكاملة. جميع الشرائح من العروض تنتهي في عرض تقديمي واحد
  • شرائح محددة. الشرائح المختارة تنتهي في عرض تقديمي واحد
  • العروض بصيغة واحدة (PPT إلى PPT، PPTX إلى PPTX، إلخ) وبصيغ مختلفة (PPT إلى PPTX، PPTX إلى ODP، إلخ) إلى بعضها البعض.

خيارات الدمج

يمكنك تطبيق خيارات تحدد ما إذاً

  • كل شريحة في العرض الناتج تحتفظ بنمط فريد
  • يتم استخدام نمط محدد لجميع الشرائح في العرض الناتج.

لدمج العروض، يوفر Aspose.Slides طرقًا AddClone (من واجهة ISlideCollection). هناك عدة تنفيذات لطرق AddClone تُعرّف معلمات عملية دمج العروض. كل كائن Presentation يحتوي على مجموعة Slides، لذا يمكنك استدعاء طريقة AddClone من العرض الذي تريد دمج الشرائح إليه.

تعيد طريقة AddClone كائن ISlide، وهو نسخة مستنسخة من الشريحة المصدر. الشرائح في العرض الناتج هي ببساطة نسخة من الشرائح في المصدر. لذلك يمكنك إجراء تغييرات على الشرائح الناتجة (مثل تطبيق الأنماط أو خيارات التنسيق أو التخطيطات) دون القلق من تأثير ذلك على العروض المصدر.

دمج العروض التقديمية

يوفر Aspose.Slides طريقة AddClone (ISlide) التي تسمح لك بدمج الشرائح مع الحفاظ على تخطيطاتها وأنماطها (المعلمات الافتراضية).

هذا الكود C++ يوضح لك كيفية دمج العروض:

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

دمج العروض التقديمية مع شريحة رئيسية

يوفر Aspose.Slides طريقة AddClone (ISlide, IMasterSlide, bool) التي تسمح لك بدمج الشرائح مع تطبيق نموذج شريحة رئيسية للعرض. بهذه الطريقة، إذا لزم الأمر، يمكنك تغيير النمط للشرائح في العرض الناتج.

هذا الكود C++ يوضح العملية الموصوفة:

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

إذا كنت تريد أن تكون للشرائح في العرض الناتج تخطيط شريحة مختلف، استخدم طريقة AddClone (ISlide, ILayoutSlide) بدلاً من ذلك عند الدمج.

دمج شرائح محددة من العروض التقديمية

دمج شرائح محددة من عروض متعددة مفيد لإنشاء مجموعات شرائح مخصصة. يتيح لك Aspose.Slides C++ اختيار واستيراد الشرائح التي تحتاجها فقط. تحافظ الواجهة البرمجية على تنسيق وتخطيط وتصميم الشرائح الأصلية.

الكود C++ التالي ينشئ عرضًا تقديميًا جديدًا، يضيف شرائح عنوان من عرضين آخرين، ويحفظ النتيجة في ملف:

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

دمج العروض التقديمية مع تخطيط شريحة

هذا الكود C++ يوضح لك كيفية دمج الشرائح من العروض مع تطبيق تخطيط شريحة مفضل لديك للحصول على عرض تقديمي واحد ناتج:

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

دمج العروض التقديمية بأحجام شرائح مختلفة

لدمج عرضين بحجم شرائح مختلف، عليك تغيير حجم أحد العروض لجعل حجمه يطابق حجم العرض الآخر.

هذا الكود النموذجي يوضح العملية الموصوفة:

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

دمج شرائح إلى قسم في العرض التقديمي

هذا الكود C++ يوضح لك كيفية دمج شريحة محددة إلى قسم في عرض تقديمي:

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

يتم إضافة الشريحة في نهاية القسم.

الأسئلة الشائعة

هل يتم الحفاظ على ملاحظات المتحدث أثناء الدمج؟

نعم. عند استنساخ الشرائح، تنقل Aspose.Slides جميع عناصر الشريحة بما في ذلك الملاحظات والتنسيقات والرسوم المتحركة.

هل يتم نقل التعليقات ومؤلفيها؟

التعليقات، كجزء من محتوى الشريحة، تُنسخ مع الشريحة. تُحافظ تسميات مؤلفي التعليقات ككائنات تعليقات في العرض الناتج.

ماذا لو كان العرض المصدر محميًا بكلمة مرور؟

يجب أن يتم تم فتحه باستخدام كلمة المرور عبر LoadOptions::set_Password؛ بعد التحميل، يمكن استنساخ تلك الشرائح بأمان إلى ملف هدف غير محمي (أو محمي أيضًا).

ما مدى أمان الخيط للدمج؟

لا تقم Using نفس Presentation من multiple threads. القاعدة الموصى بها هي “وثيقة واحدة — خيط واحد”؛ يمكن معالجة ملفات مختلفة بالتوازي في خيوط منفصلة.