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

บทนำ

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

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

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

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

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

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

เพิ่มเลเอาท์สไลด์ในพรีเซนเทชัน

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

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

โค้ด C# ต่อไปนี้แสดงวิธีเพิ่มเลเอาท์สไลด์ในพรีเซนเทชัน PowerPoint:

// สร้างอินสแตนซ์ของคลาส Presentation ซึ่งเป็นตัวแทนของไฟล์ PowerPoint.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // ไปผ่านประเภทเลเอาท์สไลด์เพื่อเลือกเลเอาท์สไลด์.
    IMasterLayoutSlideCollection layoutSlides = presentation.Masters[0].LayoutSlides;
    ILayoutSlide layoutSlide = layoutSlides.GetByType(SlideLayoutType.TitleAndObject) ?? layoutSlides.GetByType(SlideLayoutType.Title);

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

        if (layoutSlide == null)
        {
            foreach (ILayoutSlide titleLayoutSlide in layoutSlides)
            {
                if (titleLayoutSlide.Name == "Title")
                {
                    layoutSlide = titleLayoutSlide;
                    break;
                }
            }

            if (layoutSlide == null)
            {
                layoutSlide = layoutSlides.GetByType(SlideLayoutType.Blank);
                if (layoutSlide == null)
                {
                    layoutSlide = layoutSlides.Add(SlideLayoutType.TitleAndObject, "Title and Object");
                }
            }
        }
    }

    // เพิ่มสไลด์เปล่าโดยใช้เลเอาท์สไลด์ที่เพิ่มไว้.
    presentation.Slides.InsertEmptySlide(0, layoutSlide);

    // บันทึกพรีเซนเทชันลงดิสก์.  
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

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

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

โค้ด C# ด้านล่างแสดงวิธีลบเลเอาท์สไลด์จากพรีเซนเทชัน PowerPoint:

using (Presentation presentation = new Presentation("Presentation.pptx"))
{
    Aspose.Slides.LowCode.Compress.RemoveUnusedLayoutSlides(presentation);
    
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

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

Aspose.Slides มีคุณสมบัติ ILayoutSlide.PlaceholderManager ที่อนุญาตให้คุณเพิ่มตัวจับตำแหน่งใหม่ในเลเอาท์สไลด์

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

ตัวจับตำแหน่ง PowerPoint เมธอดใน ILayoutPlaceholderManager
Content AddContentPlaceholder(float x, float y, float width, float height)
Content (Vertical) AddVerticalContentPlaceholder(float x, float y, float width, float height)
Text AddTextPlaceholder(float x, float y, float width, float height)
Text (Vertical) AddVerticalTextPlaceholder(float x, float y, float width, float height)
Picture AddPicturePlaceholder(float x, float y, float width, float height)
Chart AddChartPlaceholder(float x, float y, float width, float height)
Table AddTablePlaceholder(float x, float y, float width, float height)
SmartArt AddSmartArtPlaceholder(float x, float y, float width, float height)
Media AddMediaPlaceholder(float x, float y, float width, float height)
Online Image AddOnlineImagePlaceholder(float x, float y, float width, float height)

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

using (var presentation = new Presentation())
{
    // ดึงเลเอาท์สไลด์ Blank.
    ILayoutSlide layout = presentation.LayoutSlides.GetByType(SlideLayoutType.Blank);

    // ดึงผู้จัดการตัวจับตำแหน่งของเลเอาท์สไลด์.
    ILayoutPlaceholderManager placeholderManager = layout.PlaceholderManager;

    // เพิ่มตัวจับตำแหน่งต่าง ๆ ไปยังเลเอาท์สไลด์ 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.
    ISlide newSlide = presentation.Slides.AddEmptySlide(layout);

    presentation.Save("Placeholders.pptx", SaveFormat.Pptx);
}

ผลลัพธ์:

The placeholders on the layout slide

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

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

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

using (Presentation presentation = new Presentation("Presentation.ppt"))
{
    ILayoutSlideHeaderFooterManager headerFooterManager = presentation.LayoutSlides[0].HeaderFooterManager;

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

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

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

โค้ด C# ด้านล่างแสดงการดำเนินการนี้:

using (Presentation presentation = new Presentation("Presentation.ppt"))
{
    IMasterSlideHeaderFooterManager headerFooterManager = presentation.Masters[0].HeaderFooterManager;

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

FAQ

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

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

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

ได้ คุณสามารถโคลนเลเอาท์สไลด์จากคอลเลกชัน LayoutSlides ของพรีเซนเทชันหนึ่งและแทรกลงในพรีเซนเทชันอื่นโดยใช้เมธอด AddClone

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

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