ใช้หรือเปลี่ยนเค้าโครงสไลด์ใน JavaScript
ภาพรวม
เค้าโครงสไลด์กำหนดตำแหน่งและการจัดรูปแบบของตั๋วตำแหน่ง เช่น ชื่อเรื่อง, ข้อความ, รูปภาพ, แผนภูมิ และตาราง การใช้เค้าโครงทำให้สไลด์มีโครงสร้างสอดคล้องกันพร้อมกับให้แต่ละสไลด์มีเนื้อหาเฉพาะของตัวเอง
เค้าโครงที่พบได้บ่อยได้แก่:
- สไลด์ชื่อเรื่อง: มีตั๋วตำแหน่งชื่อเรื่องและชื่อย่อย
- ชื่อเรื่องและเนื้อหา: มีตั๋วตำแหน่งชื่อเรื่องและตั๋วตำแหน่งเนื้อหาทั่วไป
- ว่าง: ไม่มีตั๋วตำแหน่งใด ๆ และเหมาะเมื่อทุกรูปร่างจะถูกวางด้วยตนเอง
ทำความเข้าใจการสืบทอดเค้าโครง
งานนำเสนอมีระดับที่เกี่ยวข้องกันสามระดับ:
- A สไลด์แม่ กำหนดธีม, การจัดรูปแบบที่ใช้ร่วมกัน, พื้นหลัง, และวัตถุทั่วไป
- A สไลด์เค้าโครง เป็นส่วนหนึ่งของสไลด์แม่และกำหนดการจัดวางตั๋วตำแหน่งเฉพาะ
- A สไลด์ปกติ ใช้เค้าโครงหนึ่งและเก็บเนื้อหาที่ป้อนสำหรับสไลด์นั้น
สไลด์ปกติสืบทอดธีมและการจัดรูปแบบจากเค้าโครงของมัน และเค้าโครงสืบทอดจากสไลด์แม่ ค่าที่ตั้งโดยตรงบนสไลด์ปกติจะทับค่าที่สืบทอดในระดับนั้น เมื่อสร้างสไลด์ปกติ รูปร่างตั๋วตำแหน่งจะถูกสร้างจากเค้าโครงที่เลือก ในขณะที่เนื้อหาที่ป้อนลงในตั๋วตำแหน่งนั้นเป็นของสไลด์ปกติ
เพิ่มตั๋วตำแหน่งที่จำเป็นลงในเค้าโครงก่อนสร้างสไลด์จากมัน การเพิ่มตั๋วตำแหน่งใหม่ในเค้าโครงภายหลังจะไม่ทำให้รูปร่างตั๋วตำแหน่งที่สอดคล้องกันถูกเพิ่มโดยอัตโนมัติในสไลด์ปกติที่มีอยู่แล้ว
ความสัมพันธ์นี้มีผลตามมาสองประการที่สำคัญ:
- การเปลี่ยนการจัดรูปแบบที่สืบทอดหรือรูปทรงตั๋วตำแหน่งที่มีอยู่บนเค้าโครงอาจอัปเดตทุกสไลด์ที่พึ่งพาเค้าโครงนั้น ก่อนแก้ไขเค้าโครงที่กำลังใช้อยู่ให้ตรวจสอบสไลด์ที่พึ่งพาและทบทวนผลลัพธ์ของงานนำเสนอ
- เค้าโครงที่ยังคงถูกสไลด์ใช้ไม่สามารถลบได้ ต้องเปลี่ยนสไลด์ที่พึ่งพาไปยังเค้าโครงอื่นก่อน หรือเพียงลบเค้าโครงที่ไม่ได้ใช้งาน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับบนสุดของลำดับชั้นนี้ ดูที่ Slide Master
เลือกและนำไปใช้เค้าโครงสไลด์
ใช้ค่า SlideLayoutType เมื่องานนำปฏิบัติตามคำนิยามเค้าโครง PowerPoint มาตรฐาน ชื่อเค้าโครงสามารถแก้ไขได้โดยผู้ใช้และสามารถแปลเป็นภาษาต่าง ๆ ดังนั้นการเลือกโดยอิงชื่อจึงน้อยกว่าเชื่อถือได้ เว้นแต่คุณจะควบคุมเทมเพลตต้นทาง
ตัวอย่างต่อไปนี้ค้นหา Title and Content บนสไลด์แม่แรก หากไม่มีเค้าโครงนั้นจะย้อนกลับไปใช้ Blank อย่างเจตนา การตรวจสอบค่า null ครั้งที่สองเป็นสิ่งจำเป็นเพราะงานนำเสนออาจมีเฉพาะเค้าโครงที่กำหนดเองเท่านั้น เค้าโครงที่เลือกจะถูกนำไปใช้กับสไลด์ปกติแรกผ่านวิธี Slide.setLayoutSlide
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("input.pptx");
try {
let layoutSlides = presentation.getMasters().get_Item(0).getLayoutSlides();
let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
let targetLayout = layoutSlides.getByType(titleAndObjectLayoutType);
if (targetLayout === null) {
targetLayout = layoutSlides.getByType(blankLayoutType);
}
if (targetLayout === null) {
throw new Error("The first master does not contain a suitable layout slide.");
}
presentation.getSlides().get_Item(0).setLayoutSlide(targetLayout);
presentation.save("output-with-new-layout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
การเปลี่ยนเค้าโครงของสไลด์จะไม่ลบรูปร่างปกติที่เพิ่มโดยตรงลงบนสไลด์ อย่างไรก็ตามตำแหน่งตั๋วตำแหน่ง, การจัดรูปแบบที่สืบทอด, และความสอดคล้องระหว่างตั๋วตำแหน่งที่มีอยู่กับเค้าโครงใหม่อาจเปลี่ยนแปลง ดังนั้นให้ตรวจสอบผลลัพธ์เมื่อสลับไปมาระหว่างเค้าโครงที่แตกต่างกันอย่างชัดเจน
เพิ่มสไลด์เค้าโครง
การเลือกและการสร้างเป็นการดำเนินการแยกกัน ตัวอย่างก่อนหน้านี้เลือกเค้าโครงที่มีอยู่แล้ว; ไม่ได้สร้างเค้าโครงใหม่ เพื่อสร้างเค้าโครงให้เรียกใช้วิธี MasterLayoutSlideCollection.add บนคอลเลกชันเค้าโครงของสไลด์แม่เป้าหมาย
ตัวอย่างต่อไปนี้จะเพิ่มเค้าโครง Title and Content ใหม่ที่ชื่อ Report Title and Content เสมอ แล้วจึงเพิ่มสไลด์ปกติที่อิงตามเค้าโครงนั้น ชื่อเค้าโครงต้องไม่ซ้ำในคอลเลกชัน
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("input.pptx");
try {
let masterSlide = presentation.getMasters().get_Item(0);
let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
let reportLayout = masterSlide.getLayoutSlides().add(titleAndObjectLayoutType, "Report Title and Content");
presentation.getSlides().addEmptySlide(reportLayout);
presentation.save("output-with-report-layout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
เพิ่มเค้าโครงเฉพาะเมื่อเทมเพลตต้องการโครงสร้างที่ใช้ซ้ำได้จริง หากมีเค้าโครงที่เหมาะสมอยู่แล้ว ให้เลือกและใช้ซ้ำแทนการสร้างสำเนาใหม่
เพิ่มตั๋วตำแหน่งลงในสไลด์เค้าโครง
วิธี LayoutSlide.getPlaceholderManager ให้บริการ LayoutPlaceholderManager สำหรับการเพิ่มรูปร่างตั๋วตำแหน่งลงในเค้าโครง
ตัวอย่างต่อไปนี้ตรวจสอบว่าเค้าโครง Blank มีอยู่ แล้วเพิ่มตั๋วตำแหน่งสี่รายการลงในเค้าโครงนั้น จากนั้นสร้างสไลด์ปกติที่ใช้เค้าโครงที่แก้ไขแล้ว ลำดับการทำงานตั้งใจให้เพิ่มตั๋วตำแหน่งก่อนสร้างสไลด์ปกติ เพื่อให้ Aspose.Slides สามารถสร้างรูปร่างตั๋วตำแหน่งที่สอดคล้องกันบนสไลด์นั้น
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation();
try {
let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
let blankLayout = presentation.getLayoutSlides().getByType(blankLayoutType);
if (blankLayout === null) {
throw new Error("The presentation does not contain a Blank layout slide.");
}
let 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", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ผลลัพธ์:

Warning
การเปลี่ยนการจัดรูปแบบที่สืบทอดหรือรูปทรงของตั๋วตำแหน่งเค้าโครงที่มีอยู่สามารถส่งผลต่อสไลด์ที่พึ่งพาได้ ตั๋วตำแหน่งเค้าโครงที่เพิ่มใหม่จะไม่ถูกเติมกลับเข้าสู่สไลด์ปกติที่มีอยู่แล้ว ให้ทดสอบการเปลี่ยนแปลงเค้าโครงบนสำเนาของงานนำเสนอและตรวจสอบสไลด์ที่พึ่งพาทุกสไลด์ลบสไลด์เค้าโครงที่ไม่ได้ใช้
ใช้วิธี Compress.removeUnusedLayoutSlides เพื่อลบเค้าโครงที่ไม่มีสไลด์ปกติอ้างอิง วิธีนี้จะละทิ้งเค้าโครงที่ยังคงใช้งานอยู่
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation("input.pptx");
try {
aspose.slides.Compress.removeUnusedLayoutSlides(presentation);
presentation.save("output-without-unused-layouts.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
เพื่อทำการลบเค้าโครงเฉพาะหนึ่งรายการ ให้ใช้วิธี hasDependingSlides หรือ getDependingSlides ก่อน ย้ายสไลด์ที่พึ่งพาไปยังเค้าโครงอื่นก่อนเรียก LayoutSlide.remove การพยายามลบเค้าโครงที่กำลังใช้งานจะทำให้เกิด PptxEditException
ควบคุมการแสดงผลส่วนท้ายบนสไลด์เค้าโครง
เค้าโครงมีส่วนท้าย, ตัวเลขสไลด์, และตั๋วตำแหน่งวันที่‑เวลา ของตนเอง ใช้วิธี LayoutSlide.getHeaderFooterManager เพื่อควบคุมตั๋วตำแหน่งเหล่านั้นสำหรับเค้าโครงหนึ่ง ๆ นี่เป็นประโยชน์เมื่อเช่น เค้าโครงเนื้อหาควรแสดงส่วนท้ายแต่เค้าโครงชื่อเรื่องไม่ควรแสดง
ตัวอย่างต่อไปนี้เลือกเค้าโครงอย่างปลอดภัยและทำให้ส่วนท้ายของมันแสดงผล
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");
let presentation = new aspose.slides.Presentation("input.pptx");
try {
let titleAndObjectLayoutType = java.newByte(aspose.slides.SlideLayoutType.TitleAndObject);
let blankLayoutType = java.newByte(aspose.slides.SlideLayoutType.Blank);
let layoutSlide = presentation.getLayoutSlides().getByType(titleAndObjectLayoutType);
if (layoutSlide === null) {
layoutSlide = presentation.getLayoutSlides().getByType(blankLayoutType);
}
if (layoutSlide === null) {
throw new Error("The presentation does not contain a suitable layout slide.");
}
let 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", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ควบคุมการแสดงผลส่วนท้ายบนสไลด์แม่และเค้าโครงลูกของมัน
เพื่อใช้การตั้งค่าส่วนท้ายอย่างสอดคล้องกันทั่วทั้งลำดับชั้นสไลด์แม่ ให้ใช้วิธี MasterSlide.getHeaderFooterManager วิธีการเผยแพร่ของ MasterSlideHeaderFooterManager ทำงานบนสไลด์แม่และสไลด์เค้าโครงและสไลด์ปกติที่พึ่งพา; ไม่ได้มุ่งเป้าแค่สไลด์ปกติหนึ่งสไลด์
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
let presentation = new aspose.slides.Presentation("input.pptx");
try {
let 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", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
คำถามที่พบบ่อย
ความแตกต่างระหว่างสไลด์แม่และสไลด์เค้าโครงคืออะไร?
สไลด์แม่กำหนดธีมและการจัดรูปแบบที่ใช้ร่วมกันของงานนำเสนอ สไลด์เค้าโครงเป็นส่วนหนึ่งของสไลด์แม่และกำหนดการจัดวางตั๋วตำแหน่งที่ใช้ซ้ำได้ สไลด์ปกติใช้เค้าโครงเหล่านั้นและเก็บเนื้อหาเฉพาะสไลด์
ฉันสามารถคัดลอกสไลด์เค้าโครงจากงานนำเสนอหนึ่งไปยังอีกงานนำเสนอได้หรือไม่?
ทำได้ ให้เพิ่มสำเนาไปยังคอลเลกชันปลายทางด้วยวิธี addClone เมื่อคัดลอกระหว่างงานนำเสนอให้ตรวจสอบแบบอักษร, ธีม, รูปภาพและทรัพยากรอื่น ๆ ที่ใช้โดยเค้าโครงต้นทางด้วย
จะเกิดอะไรขึ้นเมื่อฉันแก้ไขเค้าโครงที่กำลังใช้อยู่แล้ว?
สไลด์ที่พึ่งพาจะสืบทอดการเปลี่ยนแปลงเค้าโครง เว้นแต่พวกเขาจะทับการจัดรูปแบบหรือวัตถุที่ได้รับผลกระทบไว้ในระดับท้องถิ่น รูปร่างตั๋วตำแหน่งและสไตล์ที่สืบทอดอาจเปลี่ยนแปลงบนหลายสไลด์พร้อมกัน ใช้วิธี getDependingSlides เพื่อระบุสไลด์ที่ได้รับผลกระทบก่อนแก้ไขเค้าโครง
จะเกิดอะไรขึ้นหากฉันลบเค้าโครงที่ยังคงถูกใช้งานอยู่?
Aspose.Slides จะโยง PptxEditException ให้ย้ายสไลด์ที่พึ่งพาไปยังเค้าโครงอื่นก่อน หรือตัวเลือกใช้ removeUnusedLayoutSlides เพื่อลบเฉพาะเค้าโครงที่ไม่มีการอ้างอิง









