تطبيق أو تغيير تخطيطات الشرائح في PHP

نظرة عامة

يحدد تخطيط الشريحة المواضع وتنسيق عناصر النائب مثل العناوين والنصوص والصور والمخططات والجداول. تطبيق التخطيط يمنح الشرائح بنية متسقة مع السماح لكل شريحة باحتواء محتواها الخاص.

أكثر التخطيطات شيوعًا تشمل:

  • شريحة العنوان: يحتوي على عناصر نائب للعنوان والعنوان الفرعي.
  • العنوان والمحتوى: يحتوي على عنصر نائب للعنوان وعنصر نائب عام للمحتوى.
  • فارغ: لا يحتوي على أي عناصر نائب للمحتوى ويكون مفيدًا عندما يتم وضع كل شكل يدويًا.

فهم وراثة التخطيط

للعرض التقديمي ثلاثة مستويات متعلقة:

  1. الشريحة الرئيسية تحدد السمة، التنسيق المشترك، الخلفيات، والكائنات العامة.
  2. شريحة التخطيط تنتمي إلى شريحة رئيسية وتحدد ترتيبًا معينًا لعناصر النائب.
  3. الشريحة العادية تستخدم تخطيطًا واحدًا وتخزن المحتوى المدخل لتلك الشريحة.

ترث الشريحة العادية السمة والتنسيق من تخطيطها، ويورث التخطيط من الشريحة الرئيسية. القيمة المحددة مباشرةً على الشريحة العادية تتجاوز القيمة الموروثة في ذلك المستوى. عند إنشاء شريحة عادية، تُنشأ أشكال العناصر النائبة من التخطيط المحدد، بينما المحتوى المدخل في تلك العناصر النائبة يخص الشريحة العادية.

أضف العناصر النائبة المطلوبة إلى تخطيط قبل إنشاء الشرائح منه. إضافة عنصر نائب آخر إلى تخطيط لاحقًا لا يضيف تلقائيًا شكل عنصر نائب مماثل إلى الشرائح العادية الموجودة.

هذه العلاقة لها نتيجتين مهمتين:

  • تغيير التنسيق الموروث أو شكل عناصر النائب الموجودة على تخطيط يمكن أن يُحدّث كل شريحة تعتمد عليه. قبل تعديل تخطيط يُستَخدم بالفعل، راقب الشرائح التابعة له وراجع العرض الناتج.
  • لا يمكن إزالة تخطيط لا يزال مستخدمًا من قبل شريحة. أعد تعيين الشرائح التابعة له إلى تخطيط آخر أولاً، أو احذف فقط التخطيطات غير المستخدمة.

لمزيد من المعلومات حول المستوى الأعلى من هذه الهرمية، انظر إلى الشريحة الرئيسية.

اختيار وتطبيق تخطيط الشريحة

استخدم نوع التخطيط عندما يتبع العرض تعريفات تخطيط PowerPoint القياسية. أسماء التخطيطات قابلة للتحرير من قبل المستخدم ويمكن توطينها، لذا فإن الاختيار بناءً على الاسم أقل موثوقية إلا إذا كنت تتحكم في القالب المصدر.

المثال التالي يبحث عن العنوان والمحتوى في أول شريحة رئيسية. إذا كان ذلك التخطيط غير متاح، فإنه يتراجع عمدًا إلى فارغ. الفحص الثاني للـ null ضروري لأن العرض قد يحتوي فقط على تخطيطات مخصصة. ثم يُطبق التخطيط المختار على أول شريحة عادية عبر طريقة Slide.setLayoutSlide.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;

$presentation = new Presentation("input.pptx");
try {
    $layoutSlides = $presentation->getMasters()->get_Item(0)->getLayoutSlides();
    $targetLayout = $layoutSlides->getByType(SlideLayoutType::TitleAndObject);

    if (java_is_null($targetLayout)) {
        $targetLayout = $layoutSlides->getByType(SlideLayoutType::Blank);
    }

    if (java_is_null($targetLayout)) {
        throw new \RuntimeException("The first master does not contain a suitable layout slide.");
    }

    $presentation->getSlides()->get_Item(0)->setLayoutSlide($targetLayout);
    $presentation->save("output-with-new-layout.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

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

إضافة شريحة تخطيط

الاختيار والإنشاء عمليتان منفصلتان. المثال السابق يختار تخطيطًا موجودًا؛ لا ينشئ واحدًا. لإنشاء تخطيط، استدعِ طريقة MasterLayoutSlideCollection.add على مجموعة تخطيطات الشريحة الرئيسية المستهدفة.

المثال التالي يضيف دائمًا تخطيطًا جديدًا العنوان والمحتوى باسم Report Title and Content، ثم يضيف شريحة عادية بناءً عليه. يجب أن تكون أسماء التخطيط فريدة داخل المجموعة.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;

$presentation = new Presentation("input.pptx");
try {
    $masterSlide = $presentation->getMasters()->get_Item(0);
    $reportLayout = $masterSlide->getLayoutSlides()->add(SlideLayoutType::TitleAndObject, "Report Title and Content");
    $presentation->getSlides()->addEmptySlide($reportLayout);

    $presentation->save("output-with-report-layout.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

أضف تخطيطًا فقط عندما يحتاج القالب فعلاً إلى بنية قابلة لإعادة الاستخدام. إذا كان هناك تخطيط مناسب موجودًا بالفعل، فاختره واستخدمه بدلاً من إنشاء نسخة مكررة.

إضافة عناصر نائب إلى شريحة تخطيط

توفر طريقة LayoutSlide.getPlaceholderManager كائنًا من نوع LayoutPlaceholderManager لإضافة أشكال عناصر نائب إلى تخطيط.

عنصر نائب PowerPoint LayoutPlaceholderManager Method
محتوى addContentPlaceholder(float x, float y, float width, float height)
محتوى (عمودي) addVerticalContentPlaceholder(float x, float y, float width, float height)
نص addTextPlaceholder(float x, float y, float width, float height)
نص (عمودي) addVerticalTextPlaceholder(float x, float y, float width, float height)
صورة addPicturePlaceholder(float x, float y, float width, float height)
مخطط addChartPlaceholder(float x, float y, float width, float height)
جدول addTablePlaceholder(float x, float y, float width, float height)
SmartArt addSmartArtPlaceholder(float x, float y, float width, float height)
وسائط addMediaPlaceholder(float x, float y, float width, float height)
صورة عبر الإنترنت addOnlineImagePlaceholder(float x, float y, float width, float height)

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

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;

$presentation = new Presentation();
try {
    $blankLayout = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);

    if (java_is_null($blankLayout)) {
        throw new \RuntimeException("The presentation does not contain a Blank layout slide.");
    }

    $placeholderManager = $blankLayout->getPlaceholderManager();
    $placeholderManager->addContentPlaceholder(20, 20, 310, 270);
    $placeholderManager->addVerticalTextPlaceholder(350, 20, 350, 270);
    $placeholderManager->addChartPlaceholder(20, 310, 310, 180);
    $placeholderManager->addTablePlaceholder(350, 310, 350, 180);

    $presentation->getSlides()->addEmptySlide($blankLayout);
    $presentation->save("output-with-placeholders.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

النتيجة:

العناصر النائبة على شريحة التخطيط

إزالة شرائح التخطيط غير المستخدمة

استخدم طريقة Compress.removeUnusedLayoutSlides لإزالة التخطيطات التي لا تُشير إليها أي شريحة عادية. تبقي الطريقة التخطيطات التي لا تزال قيد الاستخدام دون تعديل.

use aspose\slides\Compress;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("input.pptx");
try {
    Compress::removeUnusedLayoutSlides($presentation);
    $presentation->save("output-without-unused-layouts.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

لإزالة تخطيط محدد، استخدم أولاً طريقتي hasDependingSlides أو getDependingSlides. أعد تعيين أي شرائح تابعة قبل استدعاء LayoutSlide.remove. محاولة إزالة تخطيط مستخدم تُثير استثناءً من نوع PptxEditException.

التحكم في رؤية تذييل الصفحة على شريحة التخطيط

للتخطيط لديه تذييل خاص به، وعناصر نائب لرقم الشريحة وتاريخ/وقت. استخدم طريقة LayoutSlide.getHeaderFooterManager للتحكم في تلك العناصر النائبة لتخطيط واحد. هذا مفيد عندما، على سبيل المثال، يجب أن تُظهر تخطيطات المحتوى التذييلات لكن لا ينبغي لتخطيطات العنوان إظهارها.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideLayoutType;

$presentation = new Presentation("input.pptx");
try {
    $layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::TitleAndObject);

    if (java_is_null($layoutSlide)) {
        $layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
    }

    if (java_is_null($layoutSlide)) {
        throw new \RuntimeException("The presentation does not contain a suitable layout slide.");
    }

    $headerFooterManager = $layoutSlide->getHeaderFooterManager();
    $headerFooterManager->setFooterVisibility(true);
    $headerFooterManager->setSlideNumberVisibility(true);
    $headerFooterManager->setDateTimeVisibility(true);
    $headerFooterManager->setFooterText("Footer text");
    $headerFooterManager->setDateTimeText("Date and time text");

    $presentation->save("output-with-layout-footers.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

التحكم في رؤية تذييل الصفحة على الشريحة الرئيسية وتخطيطاتها الفرعية

لتطبيق إعدادات تذييل متسقة عبر هيكل شريحة رئيسية، استخدم طريقة MasterSlide.getHeaderFooterManager. تعمل طرق النشر الخاصة بـ MasterSlideHeaderFooterManager على الشريحة الرئيسية وتخطيطاتها التابعة والشرائح العادية؛ فهي لا تستهدف شريحة عادية واحدة فقط.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("input.pptx");
try {
    $headerFooterManager = $presentation->getMasters()->get_Item(0)->getHeaderFooterManager();
    $headerFooterManager->setFooterAndChildFootersVisibility(true);
    $headerFooterManager->setSlideNumberAndChildSlideNumbersVisibility(true);
    $headerFooterManager->setDateTimeAndChildDateTimesVisibility(true);
    $headerFooterManager->setFooterAndChildFootersText("Footer text");
    $headerFooterManager->setDateTimeAndChildDateTimesText("Date and time text");

    $presentation->save("output-with-master-footers.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

الأسئلة المتكررة

ما الفرق بين الشريحة الرئيسية وشريحة التخطيط؟

تحدد الشريحة الرئيسية سمة العرض التقديمي وتنسيقها المشترك. شريحة التخطيط تنتمي إلى شريحة رئيسية وتحدد ترتيبًا قابلًا لإعادة الاستخدام لعناصر النائب. تستخدم الشرائح العادية تلك التخطيطات وتخزن محتوىًا خاصًا بكل شريحة.

هل يمكنني نسخ شريحة تخطيط من عرض تقديمي إلى آخر؟

نعم. أضف نسخة إلى مجموعة الوجهة باستخدام طريقة addClone. عند النسخ بين العروض، تحقق أيضًا من الخطوط والسمات والصور وغيرها من الموارد المستخدمة في التخطيط المصدر.

ماذا يحدث عندما أقوم بتعديل تخطيط قيد الاستخدام بالفعل؟

ترث الشرائح التابعة تغييرات التخطيط ما لم تكن قد تجاوزت التنسيق أو الكائنات المتأثرة محليًا. يمكن أن يتغير شكل عناصر النائب والتنسيق الموروث على العديد من الشرائح مرةً واحدة. استخدم getDependingSlides لتحديد الشرائح المتأثرة قبل تعديل التخطيط.

ماذا يحدث إذا قمت بإزالة تخطيط لا يزال قيد الاستخدام؟

تثير Aspose.Slides استثناءً من نوع PptxEditException. أعد تعيين الشرائح التابعة أولاً، أو استخدم طريقة removeUnusedLayoutSlides لإزالة التخطيطات غير المرجعية فقط.