ใช้หรือเปลี่ยนเค้าโครงสไลด์ใน Python ผ่าน Java
ภาพรวม
เค้าโครงสไลด์กำหนดตำแหน่งและรูปแบบของตัวแทนเช่น ชื่อเรื่อง, ข้อความ, รูปภาพ, แผนภูมิ, และตาราง การใช้เค้าโครงทำให้สไลด์มีโครงสร้างที่สม่ำเสมอขณะยังให้แต่ละสไลด์สามารถมีเนื้อหาของตนเองได้.
เค้าโครงที่พบบ่อยที่สุดรวมถึง:
- Title Slide: มีตัวแทนชื่อเรื่องและชื่อเรื่องย่อย
- Title and Content: มีตัวแทนชื่อเรื่องและตัวแทนเนื้อหาทั่วไป
- Blank: ไม่มีตัวแทนเนื้อหาและมีประโยชน์เมื่อรูปทรงทุกอย่างจะถูกจัดตำแหน่งด้วยตนเอง
เข้าใจการสืบทอดเค้าโครง
งานนำเสนอมีระดับที่เกี่ยวข้องสามระดับ:
- สไลด์แม่ กำหนดธีม, รูปแบบที่แชร์, พื้นหลัง, และวัตถุทั่วไป.
- สไลด์เค้าโครง เป็นส่วนหนึ่งของสไลด์แม่และกำหนดการจัดวางตัวแทนเฉพาะ.
- สไลด์ปกติ ใช้เค้าโครงหนึ่งและเก็บเนื้อหาที่ป้อนสำหรับสไลด์นั้น.
สไลด์ปกติสืบทอดธีมและรูปแบบจากเค้าโครงของมัน และเค้าโครงสืบทอดจากสไลด์แม่ ค่าที่ตั้งโดยตรงบนสไลด์ปกติจะทับค่าที่สืบทอดในระดับนั้น เมื่อสร้างสไลด์ปกติ รูปร่างตัวแทนของมันจะสร้างจากเค้าโครงที่เลือก ในขณะที่เนื้อหาที่ป้อนเข้าสู่ตัวแทนนั้นเป็นของสไลด์ปกติ
เพิ่มตัวแทนที่จำเป็นลงในเค้าโครงก่อนสร้างสไลด์จากเค้าโครงนั้น การเพิ่มตัวแทนเพิ่มเติมในภายหลังจะไม่ได้เพิ่มรูปร่างตัวแทนที่สอดคล้องให้กับสไลด์ปกติที่มีอยู่โดยอัตโนมัติ
ความสัมพันธ์นี้มีผลสำคัญสองประการ:
- การเปลี่ยนรูปแบบที่สืบทอดหรือรูปทรงของตัวแทนที่มีอยู่บนเค้าโครงอาจอัปเดตสไลด์ทุกสไลด์ที่พึ่งพา ก่อนแก้ไขเค้าโครงที่ใช้งานอยู่แล้ว ให้ตรวจสอบสไลด์ที่พึ่งพาและตรวจทานงานนำเสนอที่ได้.
- เค้าโครงที่ยังถูกสไลด์ใช้อยู่ไม่สามารถลบได้ ให้นำสไลด์ที่พึ่งพาเปลี่ยนไปใช้เค้าโครงอื่นก่อน หรือให้ลบเฉพาะเค้าโครงที่ไม่ได้ใช้เท่านั้น.
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับบนสุดของลำดับชั้นนี้ ดูที่ สไลด์แม่.
เลือกและใช้เค้าโครงสไลด์
ใช้ประเภทเค้าโครงเมื่อการนำเสนอปฏิบัติตามคำนิยามเค้าโครงมาตรฐานของ PowerPoint. ชื่อเค้าโครงสามารถแก้ไขได้โดยผู้ใช้และสามารถทำให้เป็นภาษาท้องถิ่นได้ ดังนั้นการเลือกโดยอ้างอิงชื่อจึงไม่ค่อยน่าเชื่อถือ หากคุณไม่ควบคุมแม่แบบต้นทาง.
ตัวอย่างต่อไปจะค้นหา Title and Content บนสไลด์แม่แรก หากไม่พบเค้าโครงนั้น จะสลับกลับไปใช้ Blank อย่างเจตนา การตรวจสอบครั้งที่สองสำหรับ None จำเป็นเพราะงานนำเสนออาจมีเฉพาะเค้าโครงที่กำหนดเองเท่านั้น เค้าโครงที่เลือกจะถูกนำไปใช้กับสไลด์ปกติแรกผ่านเมธอด Slide.setLayoutSlide.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slides = presentation.getMasters().get_Item(0).getLayoutSlides()
target_layout = layout_slides.getByType(SlideLayoutType.TitleAndObject)
if target_layout is None:
target_layout = layout_slides.getByType(SlideLayoutType.Blank)
if target_layout is None:
print("The first master does not contain a suitable layout slide.")
else:
presentation.getSlides().get_Item(0).setLayoutSlide(target_layout)
presentation.save("output-with-new-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
การเปลี่ยนเค้าโครงของสไลด์ไม่ได้ลบรูปร่างปกติที่เพิ่มโดยตรงบนสไลด์ อย่างไรก็ตาม ตำแหน่งตัวแทน, รูปแบบที่สืบทอด, และความสอดคล้องระหว่างตัวแทนที่มีอยู่กับเค้าโครงใหม่อาจเปลี่ยนแปลง ดังนั้นควรตรวจสอบผลลัพธ์เมื่อสลับระหว่างเค้าโครงที่แตกต่างอย่างมาก.
เพิ่มสไลด์เค้าโครง
การเลือกและการสร้างเป็นการดำเนินการแยกกัน ตัวอย่างก่อนหน้าเลือกเค้าโครงที่มีอยู่; ไม่ได้สร้างเค้าโครงใหม่ เพื่อสร้างเค้าโครงให้เรียกเมธอด MasterLayoutSlideCollection.add บนคอลเลกชันเค้าโครงของสไลด์แม่เป้าหมาย.
ตัวอย่างต่อไปจะเพิ่มเค้าโครง Title and Content ใหม่ชื่อ Report Title and Content เสมอ จากนั้นเพิ่มสไลด์ปกติที่อิงจากเค้าโครงนั้น ชื่อเค้าโครงต้องไม่ซ้ำกันภายในคอลเลกชัน.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
master_slide = presentation.getMasters().get_Item(0)
report_layout = master_slide.getLayoutSlides().add(SlideLayoutType.TitleAndObject, "Report Title and Content")
presentation.getSlides().addEmptySlide(report_layout)
presentation.save("output-with-report-layout.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
เพิ่มเค้าโครงเฉพาะเมื่อเทมเพลตต้องการโครงสร้างที่สามารถใช้ซ้ำได้จริง หากมีเค้าโครงที่เหมาะสมอยู่แล้ว ให้เลือกและใช้ซ้ำแทนการสร้างซ้ำ.
เพิ่มตัวแทนลงในสไลด์เค้าโครง
เมธอด LayoutSlide.getPlaceholderManager ให้ LayoutPlaceholderManager เพื่อเพิ่มรูปร่างตัวแทนลงในเค้าโครง.
ตัวอย่างต่อไปตรวจสอบว่าเค้าโครง Blank มีอยู่, เพิ่มตัวแทนสี่รายการลงในเค้าโครงนั้น, แล้วสร้างสไลด์ปกติที่ใช้เค้าโครงที่แก้ไขแล้ว ลำดับนี้ตั้งใจไว้: ตัวแทนจะถูกเพิ่มก่อนที่สไลด์ปกติจะสร้าง เพื่อให้ Aspose.Slides สามารถสร้างรูปร่างตัวแทนที่สอดคล้องบนสไลด์นั้น.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation()
try:
blank_layout = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if blank_layout is None:
print("The presentation does not contain a Blank layout slide.")
else:
placeholder_manager = blank_layout.getPlaceholderManager()
placeholder_manager.addContentPlaceholder(20, 20, 310, 270)
placeholder_manager.addVerticalTextPlaceholder(350, 20, 350, 270)
placeholder_manager.addChartPlaceholder(20, 310, 310, 180)
placeholder_manager.addTablePlaceholder(350, 310, 350, 180)
presentation.getSlides().addEmptySlide(blank_layout)
presentation.save("output-with-placeholders.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
ผลลัพธ์:

Warning
การเปลี่ยนรูปแบบที่สืบทอดหรือรูปทรงของตัวแทนเค้าโครงที่มีอยู่สามารถส่งผลต่อสไลด์ที่พึ่งพาได้ ตัวแทนเค้าโครงที่เพิ่มใหม่จะไม่ถูกเติมกลับในสไลด์ปกติที่มีอยู่ ทดสอบการเปลี่ยนแปลงเค้าโครงบนสำเนาของงานนำเสนอและตรวจสอบสไลด์ที่พึ่งพาทุกสไลด์.ลบสไลด์เค้าโครงที่ไม่ได้ใช้
ใช้เมธอด Compress.removeUnusedLayoutSlides เพื่อลบเค้าโครงที่ไม่มีสไลด์ปกติอ้างอิง เมธอดจะคงเค้าโครงที่ยังใช้งานไว้.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Compress, Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
Compress.removeUnusedLayoutSlides(presentation)
presentation.save("output-without-unused-layouts.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
เพื่อเอาเค้าโครงเฉพาะหนึ่งออก ให้ใช้เมธอด hasDependingSlides หรือ getDependingSlides ของมันก่อน ย้ายสไลด์ที่พึ่งพาใด ๆ ก่อนเรียก LayoutSlide.remove. การพยายามลบเค้าโครงที่ยังใช้งานจะทำให้เกิด PptxEditException.
ควบคุมการแสดงผลส่วนท้ายบนสไลด์เค้าโครง
เค้าโครงมีตัวแทนส่วนท้าย, ตัวเลขสไลด์, และตัวแทนวันที่เวลาเป็นของตัวเอง ใช้เมธอด LayoutSlide.getHeaderFooterManager เพื่อควบคุมตัวแทนเหล่านั้นสำหรับเค้าโครงหนึ่ง การทำเช่นนี้มีประโยชน์เมื่อเช่น เค้าโครงเนื้อหาควรแสดงส่วนท้ายแต่เค้าโครงชื่อเรื่องไม่ควรแสดง.
ตัวอย่างต่อไปเลือกเค้าโครงอย่างปลอดภัยและทำให้ส่วนท้ายของมันแสดงผล:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideLayoutType
presentation = Presentation("input.pptx")
try:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.TitleAndObject)
if layout_slide is None:
layout_slide = presentation.getLayoutSlides().getByType(SlideLayoutType.Blank)
if layout_slide is None:
print("The presentation does not contain a suitable layout slide.")
else:
header_footer_manager = layout_slide.getHeaderFooterManager()
header_footer_manager.setFooterVisibility(True)
header_footer_manager.setSlideNumberVisibility(True)
header_footer_manager.setDateTimeVisibility(True)
header_footer_manager.setFooterText("Footer text")
header_footer_manager.setDateTimeText("Date and time text")
presentation.save("output-with-layout-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
ควบคุมการแสดงผลส่วนท้ายบนสไลด์แม่และเค้าโครงลูกของมัน
เพื่อใช้การตั้งค่าส่วนท้ายที่สอดคล้องกันทั่วระดับสไลด์แม่ ให้ใช้เมธอด MasterSlide.getHeaderFooterManager. วิธีการกระจายของ MasterSlideHeaderFooterManager ทำงานบนสไลด์แม่และสไลด์เค้าโครงและสไลด์ปกติที่พึ่งพา; ไม่ได้มุ่งเป้าแค่สไลด์ปกติหนึ่งเท่านั้น.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("input.pptx")
try:
header_footer_manager = presentation.getMasters().get_Item(0).getHeaderFooterManager()
header_footer_manager.setFooterAndChildFootersVisibility(True)
header_footer_manager.setSlideNumberAndChildSlideNumbersVisibility(True)
header_footer_manager.setDateTimeAndChildDateTimesVisibility(True)
header_footer_manager.setFooterAndChildFootersText("Footer text")
header_footer_manager.setDateTimeAndChildDateTimesText("Date and time text")
presentation.save("output-with-master-footers.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
คำถามที่พบบ่อย
ความแตกต่างระหว่างสไลด์แม่และสไลด์เค้าโครงคืออะไร?
สไลด์แม่กำหนดธีมและรูปแบบที่แชร์ของงานนำเสนอ สไลด์เค้าโครงเป็นส่วนของสไลด์แม่และกำหนดการจัดวางตัวแทนที่ใช้ซ้ำได้หนึ่งแบบ สไลด์ปกติใช้เค้าโครงเหล่านั้นและเก็บเนื้อหาเฉพาะของสไลด์.
ฉันสามารถคัดลอกสไลด์เค้าโครงจากงานนำเสนอหนึ่งไปยังอีกงานนำเสนอหนึ่งได้หรือไม่?
ได้เลย. เพิ่มสำเนาไปยังคอลเลกชันปลายทางโดยใช้เมธอด addClone. เมื่อคัดลอกระหว่างงานนำเสนอ ควรตรวจสอบฟอนต์, ธีม, รูปภาพ, และทรัพยากรอื่น ๆ ที่เค้าโครงต้นทางใช้.
จะเกิดอะไรขึ้นเมื่อฉันแก้ไขเค้าโครงที่กำลังใช้งานอยู่?
สไลด์ที่พึ่งพาจะสืบทอดการเปลี่ยนแปลงของเค้าโครง เว้นแต่พวกเขาจะทับรูปแบบหรือวัตถุที่ได้รับผลกระทบในระดับท้องถิ่น ดังนั้นรูปทรงของตัวแทนและสไตล์ที่สืบทอดอาจเปลี่ยนแปลงในหลายสไลด์พร้อมกัน ใช้ getDependingSlides เพื่อระบุสไลด์ที่ได้รับผลก่อนแก้ไขเค้าโครง.
จะเกิดอะไรขึ้นหากฉันลบเค้าโครงที่ยังถูกใช้งานอยู่?
Aspose.Slides จะโยงข้อผิดพลาด PptxEditException. ให้ย้ายสไลด์ที่พึ่งพาออกก่อน หรือใช้ removeUnusedLayoutSlides เพื่อลบเค้าโครงที่ไม่ได้อ้างอิงเท่านั้น.









