ใช้หรือเปลี่ยนเค้าโครงสไลด์ใน PHP

บทนำ

เค้าโครงสไลด์กำหนดการจัดเรียงของกล่องส่วนพื้นที่สำรองและการจัดรูปแบบสำหรับเนื้อหาบนสไลด์ มันควบคุมว่ามีส่วนพื้นที่สำรองใดบ้างที่พร้อมใช้งานและปรากฏที่ตำแหน่งใด เค้าโครงสไลด์ช่วยให้คุณออกแบบงานนำเสนอได้อย่างรวดเร็วและสม่ำเสมอ — ไม่ว่าจะเป็นการสร้างสิ่งที่ง่ายหรือซับซ้อนมากขึ้น บางส่วนของเค้าโครงสไลด์ที่พบบ่อยที่สุดใน PowerPoint ได้แก่:

เค้าโครงสไลด์หัวเรื่อง – มีส่วนพื้นที่สำรองข้อความสองส่วน: หนึ่งสำหรับหัวเรื่องและหนึ่งสำหรับหัวเรื่องย่อย.

เค้าโครงหัวเรื่องและเนื้อหา – มีส่วนพื้นที่สำรองหัวเรื่องขนาดเล็กที่ด้านบนและส่วนที่ใหญ่กว่าใต้เพื่อเนื้อหาหลัก (เช่น ข้อความ, รายการหัวข้อ, แผนภูมิ, รูปภาพ, และอื่น ๆ).

เค้าโครงเปล่า – ไม่มีส่วนพื้นที่สำรองใด ๆ ให้คุณควบคุมเต็มที่ในการออกแบบสไลด์ตั้งแต่ต้น.

เค้าโครงสไลด์เป็นส่วนหนึ่งของมาสเตอร์สไลด์ ซึ่งเป็นสไลด์ระดับบนสุดที่กำหนดสไตล์เค้าโครงสำหรับงานนำเสนอ คุณสามารถเข้าถึงและแก้ไขเค้าโครงสไลด์ผ่านมาสเตอร์สไลด์ — ไม่ว่าจะโดยประเภท, ชื่อ, หรือรหัสประจำตัวที่ไม่ซ้ำกัน อีกทางหนึ่งคุณสามารถแก้ไขเค้าโครงสไลด์เฉพาะโดยตรงภายในงานนำเสนอได้.

เพื่อทำงานกับเค้าโครงสไลด์ใน Aspose.Slides for PHP คุณสามารถใช้:

เพิ่มเค้าโครงสไลด์ในงานนำเสนอ

เพื่อปรับแต่งรูปลักษณ์และโครงสร้างของสไลด์ของคุณ คุณอาจต้องเพิ่มเค้าโครงสไลด์ใหม่ลงในงานนำเสนอ Aspose.Slides for PHP ช่วยให้คุณตรวจสอบว่าเค้าโครงเฉพาะมีอยู่แล้วหรือไม่, เพิ่มเค้าโครงใหม่หากจำเป็น, และใช้มันในการแทรกสไลด์ตามเค้าโครงนั้น.

  1. สร้างอินสแตนซ์ของคลาส Presentation.
  2. เข้าถึง MasterLayoutSlideCollection.
  3. ตรวจสอบว่าเค้าโครงสไลด์ที่ต้องการมีอยู่แล้วในคอลเลกชันหรือไม่ หากไม่มี ให้เพิ่มเค้าโครงสไลด์ที่ต้องการ.
  4. เพิ่มสไลด์เปล่าตามเค้าโครงสไลด์ใหม่.
  5. บันทึกงานนำเสนอ.

โค้ด PHP ด้านล่างนี้แสดงวิธีเพิ่มเค้าโครงสไลด์ในงานนำเสนอ PowerPoint:

// สร้างอินสแตนซ์ของคลาส Presentation ที่แสดงถึงไฟล์ PowerPoint.
$presentation = new Presentation("Sample.pptx");
try {
    // ดำเนินการผ่านประเภทเค้าโครงสไลด์เพื่อเลือกเค้าโครงสไลด์.
    $layoutSlides = $presentation->getMasters()->get_Item(0)->getLayoutSlides();
    $layoutSlide = null;
    if (!java_is_null($layoutSlides->getByType(SlideLayoutType::TitleAndObject))) {
        $layoutSlide = $layoutSlides->getByType(SlideLayoutType::TitleAndObject);
    } else {
        $layoutSlide = $layoutSlides->getByType(SlideLayoutType::Title);
    }

    if (java_is_null($layoutSlide)) {
        // สถานการณ์ที่งานนำเสนอไม่มีเค้าโครงประเภททั้งหมด.
        // ไฟล์งานนำเสนอมีเฉพาะเค้าโครงประเภท Blank และ Custom เท่านั้น.
        // อย่างไรก็ตาม เค้าโครงสไลด์ที่เป็นประเภท custom อาจมีชื่อที่จดจำได้,
        // เช่น "Title", "Title and Content" เป็นต้น ซึ่งสามารถใช้สำหรับการเลือกเค้าโครงสไลด์.
        // คุณยังสามารถอาศัยชุดประเภทรูปแบบส่วนพื้นที่สำรองได้.
        // ตัวอย่างเช่น สไลด์ Title ควรมีเฉพาะประเภทส่วนพื้นที่สำรอง Title เท่านั้น เป็นต้น.
        foreach($layoutSlides as $titleAndObjectLayoutSlide) {
            if (java_values($titleAndObjectLayoutSlide->getName()) == "Title and Object") {
                $layoutSlide = $titleAndObjectLayoutSlide;
                break;
            }
        }

        if (java_is_null($layoutSlide)) {
            foreach($layoutSlides as $titleLayoutSlide) {
                if (java_values($titleLayoutSlide->getName()) == "Title") {
                    $layoutSlide = $titleLayoutSlide;
                    break;
                }
            }

            if (java_is_null($layoutSlide)) {
                $layoutSlide = $layoutSlides->getByType(SlideLayoutType::Blank);
                if (java_is_null($layoutSlide)) {
                    $layoutSlide = $layoutSlides->add(SlideLayoutType::TitleAndObject, "Title and Object");
                }
            }
        }
    }

    // เพิ่มสไลด์เปล่าโดยใช้เค้าโครงสไลด์ที่เพิ่มเข้ามา.
    $presentation->getSlides()->insertEmptySlide(0, $layoutSlide);

    // บันทึกงานนำเสนอลงดิสก์.
    $presentation->save("output.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

ลบเค้าโครงสไลด์ที่ไม่ใช้

Aspose.Slides มีเมธอด removeUnusedLayoutSlides จากคลาส Compress เพื่อให้คุณสามารถลบเค้าโครงสไลด์ที่ไม่ต้องการและไม่ได้ใช้ได้.

โค้ด PHP ด้านล่างนี้แสดงวิธีลบเค้าโครงสไลด์จากงานนำเสนอ PowerPoint:

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

เพิ่มส่วนพื้นที่สำรองในเค้าโครงสไลด์

Aspose.Slides มีเมธอด LayoutSlide.getPlaceholderManager ซึ่งช่วยให้คุณสามารถเพิ่มส่วนพื้นที่สำรองใหม่ลงในเค้าโครงสไลด์ได้.

ผู้จัดการนี้มีเมธอดสำหรับประเภทส่วนพื้นที่สำรองต่อไปนี้:

PowerPoint Placeholder เมธอดของ LayoutPlaceholderManager
เนื้อหา 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)

โค้ด PHP ด้านล่างนี้แสดงวิธีเพิ่มรูปร่างส่วนพื้นที่สำรองใหม่ไปยังเค้าโครงสไลด์เปล่า:

$presentation = new Presentation();
try {
    // รับเค้าโครงสไลด์ Blank.
    $layout = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);

    // รับผู้จัดการส่วนพื้นที่สำรองของเค้าโครงสไลด์.
    $placeholderManager = $layout->getPlaceholderManager();

    // เพิ่มส่วนพื้นที่สำรองต่าง ๆ ไปยังเค้าโครงสไลด์ Blank.
    $placeholderManager->addContentPlaceholder(20, 20, 310, 270);
    $placeholderManager->addVerticalTextPlaceholder(350, 20, 350, 270);
    $placeholderManager->addChartPlaceholder(20, 310, 310, 180);
    $placeholderManager->addTablePlaceholder(350, 310, 350, 180);

    // เพิ่มสไลด์ใหม่โดยใช้เค้าโครง Blank.
    $newSlide = $presentation->getSlides()->addEmptySlide($layout);

    $presentation->save("Placeholders.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

ผลลัพธ์:

ส่วนพื้นที่สำรองบนสไลด์เค้าโครง

ตั้งค่าการแสดงผลส่วนท้ายสำหรับเค้าโครงสไลด์

ในการนำเสนอ PowerPoint ส่วนของส่วนท้าย เช่น วันที่, หมายเลขสไลด์, และข้อความกำหนดเอง สามารถแสดงหรือซ่อนได้ตามเค้าโครงสไลด์ Aspose.Slides for PHP ช่วยให้คุณควบคุมการมองเห็นของส่วนพื้นที่สำรองส่วนท้ายเหล่านี้ ซึ่งเป็นประโยชน์เมื่อคุณต้องการให้เค้าโครงบางอย่างแสดงข้อมูลส่วนท้ายในขณะที่อื่นๆ คงความเรียบง่ายและน้อยที่สุด.

  1. สร้างอินสแตนซ์ของคลาส Presentation.
  2. รับอ้างอิงเค้าโครงสไลด์โดยใช้ดัชนีของมัน.
  3. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองส่วนท้ายของสไลด์ให้เป็นที่มองเห็น.
  4. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองหมายเลขสไลด์ให้เป็นที่มองเห็น.
  5. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองวันที่-เวลาให้เป็นที่มองเห็น.
  6. บันทึกงานนำเสนอ.
$presentation = new Presentation("Presentation.ppt");
try {
    $headerFooterManager = $presentation->getLayoutSlides()->get_Item(0)->getHeaderFooterManager();

    if (!$headerFooterManager->isFooterVisible()) {
        $headerFooterManager->setFooterVisibility(true);
    }

    if (!$headerFooterManager->isSlideNumberVisible()) {
        $headerFooterManager->setSlideNumberVisibility(true);
    }

    if (!$headerFooterManager->isDateTimeVisible()) {
        $headerFooterManager->setDateTimeVisibility(true);
    }

    $headerFooterManager->setFooterText("Footer text");
    $headerFooterManager->setDateTimeText("Date and time text");

    $presentation->save("Presentation.ppt", SaveFormat::Ppt);
} finally {
    $presentation->dispose();
}

ตั้งค่าการแสดงผลส่วนท้ายของสไลด์ลูก

ในการนำเสนอ PowerPoint ส่วนของส่วนท้าย เช่น วันที่, หมายเลขสไลด์, และข้อความกำหนดเอง สามารถควบคุมได้ระดับมาสเตอร์สไลด์เพื่อให้แน่ใจว่ามีความสอดคล้องกันในทุกเค้าโครงสไลด์ Aspose.Slides for PHP ให้คุณตั้งค่าการมองเห็นและเนื้อหาของส่วนพื้นที่สำรองส่วนท้ายเหล่านี้บนมาสเตอร์สไลด์และกระจายการตั้งค่าเหล่านั้นไปยังเค้าโครงสไลด์ลูกทั้งหมด วิธีนี้ทำให้ข้อมูลส่วนท้ายสอดคล้องกันทั่วงานนำเสนอของคุณ.

  1. สร้างอินสแตนซ์ของคลาส Presentation.
  2. รับอ้างอิงมาสเตอร์สไลด์โดยใช้ดัชนีของมัน.
  3. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองส่วนท้ายของมาสเตอร์และเค้าโครงสไลด์ลูกทั้งหมดให้เป็นที่มองเห็น.
  4. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองหมายเลขสไลด์ของมาสเตอร์และเค้าโครงสไลด์ลูกทั้งหมดให้เป็นที่มองเห็น.
  5. ตั้งค่าการแสดงผลส่วนพื้นที่สำรองวันที่-เวลาของมาสเตอร์และเค้าโครงสไลด์ลูกทั้งหมดให้เป็นที่มองเห็น.
  6. บันทึกงานนำเสนอ.
$presentation = new Presentation("presentation.ppt");
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.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

คำถามที่พบบ่อย

ความแตกต่างระหว่างมาสเตอร์สไลด์และเค้าโครงสไลด์คืออะไร?

มาสเตอร์สไลด์กำหนดธีมโดยรวมและการจัดรูปแบบเริ่มต้น ขณะที่เค้าโครงสไลด์กำหนดการจัดเรียงส่วนพื้นที่สำรองเฉพาะสำหรับประเภทเนื้อหาต่าง ๆ

ฉันสามารถคัดลอกเค้าโครงสไลด์จากงานนำเสนอหนึ่งไปยังอีกงานหนึ่งได้หรือไม่?

ได้ คุณสามารถโคลนเค้าโครงสไลด์จากคอลเลกชันเค้าโครงสไลด์ของงานนำเสนอหนึ่ง (เข้าถึงได้ผ่านเมธอด getLayoutSlides) และแทรกลงในงานนำเสนออื่นโดยใช้เมธอด addClone.

จะเกิดอะไรขึ้นหากฉันลบเค้าโครงสไลด์ที่ยังคงถูกสไลด์อื่นใช้งานอยู่?

หากคุณพยายามลบเค้าโครงสไลด์ที่ยังถูกอ้างอิงโดยสไลด์อย่างน้อยหนึ่งสไลด์ในงานนำเสนอ Aspose.Slides จะทำให้เกิดข้อยกเว้น PptxEditException. เพื่อหลีกเลี่ยงนี้ ให้ใช้ removeUnusedLayoutSlides ซึ่งจะลบเค้าโครงสไลด์ที่ไม่ได้ใช้โดยปลอดภัยเท่านั้น.