ใช้หรือเปลี่ยนรูปแบบสไลด์ใน Java

บทนำ

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

Title Slide layout – มีตัวแทนข้อความสองกล่อง: หนึ่งสำหรับหัวเรื่องและอีกหนึ่งสำหรับหัวเรื่องย่อย

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

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

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

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

เพิ่มรูปแบบสไลด์ลงในการพรีเซนเทชัน

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

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

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

// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นไฟล์ PowerPoint.
Presentation presentation = new Presentation("Sample.pptx");
try {
    // ดำเนินการตรวจสอบประเภทสไลด์เลย์เอาต์เพื่อเลือกสไลด์เลย์เอาต์.
    IMasterLayoutSlideCollection layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
    ILayoutSlide layoutSlide = null;
    if (layoutSlides.getByType(SlideLayoutType.TitleAndObject) != null)
        layoutSlide = layoutSlides.getByType(SlideLayoutType.TitleAndObject);
    else
        layoutSlide = layoutSlides.getByType(SlideLayoutType.Title);

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

        if (layoutSlide == null) {
            for (ILayoutSlide titleLayoutSlide : layoutSlides) {
                if (titleLayoutSlide.getName().equals("Title")) {
                    layoutSlide = titleLayoutSlide;
                    break;
                }
            }

            if (layoutSlide == null) {
                layoutSlide = layoutSlides.getByType(SlideLayoutType.Blank);
                if (layoutSlide == null) {
                    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 เพื่อให้คุณลบสไลด์เลย์เอาต์ที่ไม่ต้องการและไม่ได้ใช้ได้

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

Presentation presentation = new Presentation("Presentation.pptx");
try {
    Compress.removeUnusedLayoutSlides(presentation);

    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

เพิ่มตัวแทนลงในรูปแบบสไลด์

Aspose.Slides มีเมธอด ILayoutSlide.getPlaceholderManager ที่ช่วยให้คุณเพิ่มตัวแทนใหม่ลงในสไลด์รูปแบบ

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

PowerPoint Placeholder Method
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)

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

Presentation presentation = new Presentation();
try {
    // ดึงสไลด์เลย์เอาต์ Blank.
    ILayoutSlide layout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank);

    // ดึงตัวจัดการตัวแทนของสไลด์เลย์เอต.
    ILayoutPlaceholderManager 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.
    ISlide newSlide = presentation.getSlides().addEmptySlide(layout);

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

ผลลัพธ์:

The placeholders on the layout slide

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

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

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

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

Presentation presentation = new Presentation("Presentation.ppt");
try {
    ILayoutSlideHeaderFooterManager 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 Java ช่วยให้คุณตั้งค่าการมองเห็นและเนื้อหาของตัวแทนส่วนท้ายเหล่านี้บนหน้าผู้นำสไลด์และกระจายการตั้งค่าเหล่านั้นไปยังสไลด์รูปแบบลูกทั้งหมด วิธีนี้ทำให้ข้อมูลส่วนท้ายเหมือนกันทั่วพรีเซนเทชันของคุณ

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

โค้ด Java ตัวอย่างต่อไปนี้แสดงการดำเนินการนี้:

Presentation presentation = new Presentation("Presentation.ppt");
try {
    IMasterSlideHeaderFooterManager 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 ซึ่งจะลบสไลด์เลย์เอาต์ที่ไม่ได้ใช้อย่างปลอดภัย