ใช้หรือเปลี่ยนเลย์เอาต์สไลด์ใน Python

บทนำ

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

เลย์เอาต์สไลด์หัวเรื่อง – มีตัวจัดตำแหน่งข้อความสองช่อง: หนึ่งสำหรับหัวเรื่องและอีกหนึ่งสำหรับหัวข้อย่อย

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

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

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

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

เพิ่มเลย์เอาต์สไลด์ลงในงานนำเสนอ

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

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

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

import aspose.slides as slides

# สร้างอินสแตนซ์ของคลาส Presentation เพื่อเปิดไฟล์งานนำเสนอ.
with slides.Presentation("sample.pptx") as presentation:
    # ไปยังประเภทเลย์เอาต์สไลด์เพื่อเลือกเลย์เอาต์สไลด์.
    layout_slides = presentation.masters[0].layout_slides
    layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.TITLE_AND_OBJECT)
    if layout_slide is None:
         layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.TITLE)

    if layout_slide is None:
        # สถานการณ์ที่งานนำเสนอไม่มีประเภทเลย์เอาต์ทั้งหมด.
        # ไฟล์งานนำเสนอมีเฉพาะประเภทเลย์เอาต์ Blank และ Custom.
        # อย่างไรก็ตาม เลย์เอาต์สไลด์ประเภท custom อาจมีชื่อที่รู้จัก,
        # เช่น "Title", "Title and Content", เป็นต้น ซึ่งสามารถใช้เลือกเลย์เอาต์สไลด์ได้.
        # คุณสามารถอิงตามชุดประเภทรูปทรงตัวจัดตำแหน่งได้เช่นกัน.
        # ตัวอย่างเช่น สไลด์ Title ควรมีเฉพาะประเภทตัวจัดตำแหน่ง Title เท่านั้น เป็นต้น.
        for title_and_object_layout_slide in layout_slides:
            if title_and_object_layout_slide.name == "Title and Object":
                layout_slide = title_and_object_layout_slide
                break

        if layout_slide is None:
            for title_layout_slide in layout_slides:
                if title_layout_slide.name == "Title":
                    layout_slide = title_layout_slide
                    break

            if layout_slide is None:
                layout_slide = layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
                if layout_slide is None:
                    layout_slide = layout_slides.Add(slides.SlideLayoutType.TITLE_AND_OBJECT, "Title and Object")

    # เพิ่มสไลด์เปล่าโดยใช้เลย์เอาต์สไลด์ที่เพิ่มไว้.
    presentation.slides.insert_empty_slide(0, layout_slide)

    # บันทึกงานนำเสนอลงดิสก์.
    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

ลบเลย์เอาต์สไลด์ที่ไม่ได้ใช้

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

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

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slides.lowcode.Compress.remove_unused_layout_slides(presentation)
    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

เพิ่มตัวจัดตำแหน่งลงในเลย์เอาต์สไลด์

Aspose.Slides มีคุณสมบัติ LayoutSlide.placeholder_manager ซึ่งช่วยให้คุณเพิ่มตัวจัดตำแหน่งใหม่ลงในเลย์เอาต์สไลด์

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

Placeholder ของ PowerPoint วิธีการของ LayoutPlaceholderManager
Content add_content_placeholder(x: float, y: float, width: float, height: float)
Content (Vertical) add_vertical_content_placeholder(x: float, y: float, width: float, height: float)
Text add_text_placeholder(x: float, y: float, width: float, height: float)
Text (Vertical) add_vertical_text_placeholder(x: float, y: float, width: float, height: float)
Picture add_picture_placeholder(x: float, y: float, width: float, height: float)
Chart add_chart_placeholder(x: float, y: float, width: float, height: float)
Table add_table_placeholder(x: float, y: float, width: float, height: float)
SmartArt add_smart_art_placeholder(x: float, y: float, width: float, height: float)
Media add_media_placeholder(x: float, y: float, width: float, height: float)
Online Image add_online_image_placeholder(x: float, y: float, width: float, height: float)

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

import aspose.slides as slides

with slides.Presentation() as presentation:
    # รับเลย์เอาต์สไลด์ Blank.
    layout = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)

    # รับตัวจัดการตัวจัดตำแหน่งของเลย์เอาต์สไลด์.
    placeholder_manager = layout.placeholder_manager

    # เพิ่มตัวจัดตำแหน่งต่าง ๆ ลงในเลย์เอาต์สไลด์ Blank.
    placeholder_manager.add_content_placeholder(20, 20, 310, 270)
    placeholder_manager.add_vertical_text_placeholder(350, 20, 350, 270)
    placeholder_manager.add_chart_placeholder(20, 310, 310, 180)
    placeholder_manager.add_table_placeholder(350, 310, 350, 180)

    # เพิ่มสไลด์ใหม่ด้วยเลย์เอาต์ Blank.
    new_slide = presentation.slides.add_empty_slide(layout)

    presentation.save("placeholders.pptx", slides.export.SaveFormat.PPTX)

ผลลัพธ์:

The placeholders on the layout slide

ตั้งค่าการมองเห็นส่วนท้ายสำหรับเลย์เอาต์สไลด์

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

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

โค้ด Python ต่อไปนี้แสดงวิธีตั้งค่าการมองเห็นของส่วนท้ายสไลด์และทำงานที่เกี่ยวข้อง:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    header_footer_manager = presentation.layout_slides[0].header_footer_manager

    if not header_footer_manager.is_footer_visible: 
        header_footer_manager.set_footer_visibility(True) 

    if not header_footer_manager.is_slide_number_visible:  
        header_footer_manager.set_slide_number_visibility(True) 

    if not header_footer_manager.is_date_time_visible: 
        header_footer_manager.set_date_time_visibility(True)

    header_footer_manager.set_footer_text("Footer text") 
    header_footer_manager.set_date_time_text("Date and time text") 

    presentation.save("output.ppt", slides.export.SaveFormat.PPT)

ตั้งค่าการมองเห็นส่วนท้ายของสไลด์ลูก

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

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

โค้ด Python ต่อไปนี้แสดงการทำงานนี้:

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    header_footer_manager = presentation.masters[0].header_footer_manager

    header_footer_manager.set_footer_and_child_footers_visibility(True)
    header_footer_manager.set_slide_number_and_child_slide_numbers_visibility(True)
    header_footer_manager.set_date_time_and_child_date_times_visibility(True)

    header_footer_manager.set_footer_and_child_footers_text("Footer text")
    header_footer_manager.set_date_time_and_child_date_times_text("Date and time text")

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

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

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

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

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

ได้ คุณสามารถโคลนเลย์เอาต์สไลด์จากคอลเลกชัน layout_slides ของงานนำเสนอหนึ่งและแทรกลงในอีกงานนำเสนอหนึ่งโดยใช้เมธอด add_clone

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

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