ผสานการนำเสนออย่างมีประสิทธิภาพด้วย Python
ภาพรวม
Aspose.Slides for Python via .NET ผสานการนำเสนอโดยการโคลนสไลด์จากหนึ่ง การนำเสนอ ไปยังอีกหนึ่ง การดำเนินการหลักคือ SlideCollection.add_clone, ซึ่งสามารถรักษาการจัดรูปแบบของสไลด์ต้นฉบับหรือแนบสไลด์ที่โคลนไว้กับมาสเตอร์หรือเลเอาต์ในการนำเสนอปลายทางได้
บทความนี้จะครอบคลุมขั้นตอนการผสานที่พบบ่อยที่สุด:
- ผสานสไลด์ทั้งหมดโดยคงการจัดรูปแบบต้นฉบับไว้;
- ผสานสไลด์ที่เลือก;
- ใช้มาสเตอร์จากการนำเสนอปลายทาง;
- ใช้เลเอาต์เฉพาะจากการนำเสนอปลายทาง;
- ปรับขนาดสไลด์ที่แตกต่างกันให้เท่ากันก่อนผสาน;
- เพิ่มสไลด์ที่โคลนลงในส่วน;
- ผสานการนำเสนอหลายไฟล์ในเวิร์กโฟลว์แบบ end‑to‑end;
- จัดการมาสเตอร์, แหล่งข้อมูล, โน๊ต, ความคิดเห็น, สื่อ, ฟอนต์, รหัสผ่าน, ไฟล์ขนาดใหญ่, และข้อกังวลเรื่องการทำงานหลายเธรด
ผลของการโคลนสไลด์ต่อมาสเตอร์และเลเอาต์
สไลด์สืบทอดรูปลักษณ์ส่วนใหญ่จากเลเอาต์และมาสเตอร์ ดังนั้นการเลือกโอเวอร์โหลดการโคลนอาจกำหนดว่าสตรีบที่ผสานแล้วจะถูกรวมเข้ากับการนำเสนอปลายทางอย่างไร
ใช้ SlideCollection.add_clone ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
add_clone(source_slide)— รักษาเลเอาต์และการจัดรูปแบบของสไลด์ต้นฉบับ เมื่อจำเป็น มาสเตอร์ต้นฉบับจะถูกโคลนเข้าสู่การนำเสนอปลายทางโดยอัตโนมัติ Aspose.Slides จะติดตามมาสเตอร์ที่โคลนอัตโนมัติเพื่อป้องกันการโคลนมาสเตอร์เดียวซ้ำหลายครั้งadd_clone(source_slide, destination_master, allow_clone_missing_layout)— แนบสไลด์ที่โคลนกับ IMasterSlide ปลายทางที่ระบุ Aspose.Slides จะค้นหาเลเอาต์ที่ตรงกันภายใต้มาสเตอร์นั้นตามประเภทหรือชื่อของเลเอาต์add_clone(source_slide, destination_layout)— แนบสไลด์ที่โคลนโดยตรงกับ ILayoutSlide ปลายทางที่ระบุ
มาสเตอร์หรือเลเอาต์ที่ส่งให้กับโอเวอร์โหลด add_clone ต้องเป็นของ การนำเสนอปลายทาง ไม่ใช่ของการนำเสนอแหล่ง
ผสานการนำเสนอทั้งหมดและคงการจัดรูปแบบต้นฉบับ
วิธีผสานที่ง่ายที่สุดคือคัดลอกทุกสไลด์จากการนำเสนอแหล่งไปยังการนำเสนอปลายทาง นี่เป็นตัวเลือกที่เหมาะสมเมื่อสไลด์ที่นำเข้าควรคงธีม, มาสเตอร์, และความสัมพันธ์ของเลเอาต์เดิมไว้
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
for slide in source.slides:
destination.slides.add_clone(slide)
destination.save("merged.pptx", slides.export.SaveFormat.PPTX)
การนำเสนอผลลัพธ์อาจมีหลายมาสเตอร์เมื่อแหล่งและปลายทางใช้การออกแบบที่แตกต่างกัน นี่เป็นพฤติกรรมที่คาดหวังเมื่อต้องการคงการจัดรูปแบบของแหล่งไว้
ผสานสไลด์ที่เลือก
คุณไม่จำเป็นต้องโคลนทุกสไลด์ ตัวอย่างต่อไปนี้จะนำเข้าตัวอย่างสไลด์ที่เลือกจากการนำเสนอแหล่งเท่านั้น
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
slide_indexes = [0, 2, 4]
for index in slide_indexes:
destination.slides.add_clone(source.slides[index])
destination.save("merged-selected-slides.pptx", slides.export.SaveFormat.PPTX)
ตรวจสอบดัชนีสไลด์ก่อนทำการโคลนเมื่อมาจากการป้อนข้อมูลของผู้ใช้หรือจากการกำหนดค่าภายนอก
ผสานสไลด์โดยใช้มาสเตอร์ปลายทาง
ใช้โอเวอร์โหลด add_clone(source_slide, destination_master, allow_clone_missing_layout) เมื่อสไลด์ที่นำเข้าควรปฏิบัติตามมาสเตอร์ที่มีอยู่แล้วในการนำเสนอปลายทาง
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
destination_master = destination.masters[0]
for slide in source.slides:
destination.slides.add_clone(slide, destination_master, True)
destination.save("merged-with-destination-master.pptx", slides.export.SaveFormat.PPTX)
Aspose.Slides จะเลือกเลเอาต์ที่เหมาะสมภายใต้มาสเตอร์ที่ระบุโดยการจับคู่ประเภทหรือชื่อของเลเอาต์ต้นฉบับ หากไม่มีเลเอาต์ที่เหมาะสมและ allow_clone_missing_layout เป็น True เลเอาต์ต้นฉบับจะถูกโคลนเพื่อให้สไลด์สามารถเพิ่มได้ หากเป็น False จะเกิด PptxEditException ขึ้น
ใช้ False เมื่อคุณต้องการให้การผสานล้มเหลวแทนที่จะเพิ่มเลเอาต์ใหม่ลงในมาสเตอร์ปลายทาง
ผสานสไลด์โดยใช้เลเอาต์ปลายทางเฉพาะ
ใช้โอเวอร์โหลด add_clone(source_slide, destination_layout) เมื่อคุณทราบอย่างชัดเจนว่าเลเอาต์ปลายทางที่สไลด์นำเข้าควรใช้คืออะไร
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
destination_layout = destination.layout_slides[0]
for slide in source.slides:
destination.slides.add_clone(slide, destination_layout)
destination.save("merged-with-destination-layout.pptx", slides.export.SaveFormat.PPTX)
การใช้เลเอาต์ปลายทางจะเปลี่ยนความสัมพันธ์ของเลเอาต์ที่สืบทอด; ไม่ได้ออกแบบเนื้อหาของสไลด์ต้นฉบับใหม่ หากเลเอาต์ต้นฉบับและปลายทางมีโครงสร้าง placeholder ที่แตกต่างกัน ให้วิเคราะห์ผลลัพธ์เพื่อยืนยันว่าการจัดรูปแบบและพฤติกรรมของ placeholder ที่สืบทอดนั้นเหมาะสมหรือไม่
ผสานการนำเสนอที่มีขนาดสไลด์ต่างกัน
การนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานได้ แต่การโคลนสไลด์ไปยังการนำเสนอที่มีขนาดสไลด์อื่นจะไม่ทำการออกแบบเนื้อหาใหม่อัตโนมัติสำหรับผ้าใบขนาดใหม่ รูปร่างอาจดูเหมือนถูกเลื่อน, ยืดหรืออยู่นอกพื้นที่สไลด์ที่มองเห็นได้
วิธีปฏิบัติที่เป็นประโยชน์คือปรับขนาดการนำเสนอแหล่งก่อนทำการโคลน วิธี SlideSize.set_size สามารถปรับขนาดเนื้อหาที่มีอยู่พร้อมกับการเปลี่ยนขนาดสไลด์ SlideSizeScaleType.ENSURE_FIT จะปรับขนาดเนื้อหาให้พอดีกับขนาดที่ร้องขอ
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
if (
source.slide_size.size.width != destination.slide_size.size.width
or source.slide_size.size.height != destination.slide_size.size.height
):
source.slide_size.set_size(
destination.slide_size.size.width,
destination.slide_size.size.height,
slides.SlideSizeScaleType.ENSURE_FIT)
for slide in source.slides:
destination.slides.add_clone(slide)
destination.save("merged-same-slide-size.pptx", slides.export.SaveFormat.PPTX)
การปรับขนาดจะเปลี่ยนวัตถุการนำเสนอแหล่งในหน่วยความจำ หากคุณต้องการให้การนำเสนอแหล่งต้นฉบับคงเดิมสำหรับการทำงานอื่น ให้เปิดอินสแตนซ์แยกสำหรับการผสาน
ผสานสไลด์ลงในส่วนของการนำเสนอ
ลูปโคลนสไลด์พื้นฐานไม่สร้างลำดับชั้นของส่วนจากการนำเสนอแหล่ง หากส่วนมีความสำคัญในผลลัพธ์ ให้สร้างหรือเลือกส่วนในการนำเสนอปลายทางและโคลนสไลด์ลงในส่วนเหล่านั้นอย่างชัดเจนด้วย SlideCollection.add_clone
import aspose.slides as slides
with slides.Presentation("destination.pptx") as destination:
with slides.Presentation("source.pptx") as source:
imported_section = destination.sections.append_empty_section("Imported slides")
for slide in source.slides:
destination.slides.add_clone(slide, imported_section)
destination.save("merged-with-section.pptx", slides.export.SaveFormat.PPTX)
สไลด์ที่โคลนจะถูกเพิ่มต่อท้ายส่วนปลายทางที่ระบุ เพื่อคงหลายส่วนจากแหล่ง ให้วนลูปผ่าน Presentation.sections, ดึงสไลด์ปัจจุบันของแต่ละส่วนด้วย Section.get_slides_list_of_section, สร้างส่วนในปลายทางใหม่และโคลนสไลด์แต่ละอันเข้าไปในส่วนที่สอดคล้องกัน ดูตัวอย่างการจัดการส่วนสไลด์ที่ Manage Slide Sections เพื่อดูตัวอย่างการวนลูปส่วนรวมถึงส่วนที่ว่างเปล่าและการเปลี่ยนแปลงโครงสร้าง
ผสานหลายการนำเสนออย่างปลอดภัย
ตัวอย่าง end‑to‑end ด้านล่างใช้การนำเสนอแรกเป็นปลายทาง, ทำให้ขนาดสไลด์ของแต่ละแหล่งที่เพิ่มเข้ามาเป็นมาตรฐาน, เปิดแต่ละแหล่งเพียงระหว่างการคัดลอก, และบันทึกไฟล์ขั้นสุดท้ายเมื่อทำเสร็จ
import aspose.slides as slides
input_files = ["part1.pptx", "part2.pptx", "part3.pptx"]
with slides.Presentation(input_files[0]) as merged:
for file_index in range(1, len(input_files)):
with slides.Presentation(input_files[file_index]) as source:
if (
source.slide_size.size.width != merged.slide_size.size.width
or source.slide_size.size.height != merged.slide_size.size.height
):
source.slide_size.set_size(
merged.slide_size.size.width,
merged.slide_size.size.height,
slides.SlideSizeScaleType.ENSURE_FIT)
for slide in source.slides:
merged.slides.add_clone(slide)
merged.save("merged.pptx", slides.export.SaveFormat.PPTX)
นี่เป็นฐานที่ดีสำหรับการคงการจัดรูปแบบของสไลด์ที่นำเข้า หากผลลัพธ์ต้องใช้ธีมเดียวจากปลายทาง ให้แทนที่การเรียก add_clone(slide) อย่างง่ายด้วยโอเวอร์โหลดมาสเตอร์หรือเลเอาต์ปลายทางที่แสดงไว้ก่อนหน้านี้
ข้อควรพิจารณาเชิงปฏิบัติ
มาสเตอร์, เลเอาต์, และความเที่ยงตรงของการจัดรูปแบบ
การโคลนสไลด์โดยค่าเริ่มต้นสามารถนำมาสเตอร์ของแหล่งที่จำเป็นเข้าสู่การนำเสนอปลายทางได้โดยอัตโนมัติ Aspose.Slides จะเก็บรีจิสเตอร์ภายในสำหรับมาสเตอร์ที่โคลนอัตโนมัติเพื่อหลีกเลี่ยงการโคลนมาสเตอร์เดียวซ้ำหลายครั้ง มาสเตอร์ที่โคลนด้วยตนเองจะไม่ถูกบันทึกในรีจิสเตอร์นั้น ดังนั้นควรหลีกเลี่ยงการโคลนมาสเตอร์ล่วงหน้า เว้นแต่คุณต้องการควบคุมโครงสร้างมาสเตอร์อย่างชัดเจน
อย่าถือว่ามาสเตอร์หรือเลเอต์สองตัวที่มีชื่อเดียวกันเป็นภาพที่เหมือนกัน หากเทมเพลตองค์กรต้องควบคุมล appearance สุดท้าย ให้เลือกมาสเตอร์หรือเลเอท์ปลายทางอย่างชัดเจนและตรวจสอบผลลัพธ์หลังการผสาน
โน๊ตและความคิดเห็น
โน๊ตของวิกากรและความคิดเห็นของสไลด์เชื่อมโยงกับเนื้อหาสไลด์และจะถูกคัดลอกเมื่อสไลด์ถูกโคลน Aspose.Slides ยังมี API เฉพาะสำหรับ presentation notes และ presentation comments
หากการจัดรูปแบบของหน้าโน๊ตสำคัญ ให้ตรวจสอบการนำเสนอที่ผสานแล้ว เพราะมาสเตอร์โน๊ตเป็นอ็อบเจกต์ระดับการนำเสนอและอาจแตกต่างกันระหว่างไฟล์แหล่ง สำหรับการตรวจสอบเวิร์กโฟลว์ ให้ตรวจสอบผู้เขียนของความคิดเห็นและเธรดของความคิดเห็นหลังจากรวมไฟล์จากผู้เขียนหรือเทมเพลตที่ต่างกัน
ภาพ, เสียง, วิดีโอ, วัตถุ OLE, และลิงก์ภายนอก
สไลด์อาจอ้างอิงทรัพยากรระดับการนำเสนอเช่นภาพ, เสียงฝัง, วิดีโอฝัง, และข้อมูล OLE ให้โคลนสไลด์ทั้งหมดแทนการคัดลอ shape ที่มองเห็นได้เท่านั้น เพื่อให้ Aspose.Slides สามารถรักษาความสัมพันธ์ของสไลด์ต่อทรัพยากรเหล่านั้นได้
ทรัพยากรที่ฝังและที่ลิงก์ควรจัดการแยกกัน ลิงก์เสียง, วิดีโอ, OLE หรือไฮเปอร์ลิงก์ที่เชื่อมต่อจะยังคงพึ่งพาเป้าหมายภายนอก; การโคลนสไลด์จะไม่ทำให้ลิงก์ภายนอกกลายเป็นเนื้อหาฝัง ตรวจสอบเส้นทางและ URL ของทรัพยากรที่ลิงก์ในสภาพแวดล้อมที่การนำเสนอที่ผสานจะถูกเปิด
Aspose.Slides บันทึกมาสเตอร์ที่โคลนอัตโนมัติไว้ในรีจิสเตอร์ แต่ไม่ควรตีความว่าเป็นการรับประกันทั่วไปว่าทรัพยากรไบนารีที่เหมือนกันจากการนำเสนอแหล่งที่ไม่เกี่ยวข้องกันจะถูกตัดซ้ำเสมอ หากขนาดไฟล์ผลลัพธ์สำคัญ ให้ตรวจสอบแพ็กเกจที่ผสานและวัดผลลัพธ์แทนการพึ่งพาการตัดซ้ำโดยอัตโนมัติ
ฟอนต์ฝังและการพร้อมใช้งานของฟอนต์
ฟอนต์ถูกจัดการระดับการนำเสนอ หากต้องการให้ typography คงที่บนเครื่องต่าง ๆ อย่าเพียงแค่โคลนสไลด์แล้วเชื่อว่าฟอนต์ที่ต้องการจะพร้อมใช้งานในสภาพแวดล้อมปลายทาง คุณสามารถตรวจสอบฟอนต์ที่ฝังด้วย FontsManager.get_embedded_fonts และจัดการการฝังอย่างชัดเจนตามที่อธิบายใน Embed Fonts in Presentations
นอกจากนี้ตรวจสอบว่าคุณมีสิทธิ์ฝังฟอนต์ที่ใช้ในไฟล์แหล่งหรือไม่ เนื่องจากใบอนุญาตฟอนต์อาจจำกัดการฝัง
การนำเสนอที่ป้องกันด้วยรหัสผ่าน
แหล่งที่ป้องกันด้วยรหัสผ่านต้องเปิดสำเร็จก่อนที่สไลด์จะถูกโคลน ให้ส่งรหัสผ่านผ่าน LoadOptions.password
import aspose.slides as slides
load_options = slides.LoadOptions()
load_options.password = "YOUR_PASSWORD"
with slides.Presentation("protected.pptx", load_options) as source:
print(len(source.slides))
การเปิดแหล่งที่เข้ารหัสจะไม่ทำให้การนำเสนอปลายทางถูกป้องกันด้วยรหัสเดียวกันโดยอัตโนมัติ กำหนดการป้องกันผลลัพธ์แยกต่างหากเมื่อจำเป็น
การนำเสนอขนาดใหญ่และการใช้หน่วยความจำ
การนำเสนอขนาดใหญ่ที่มีภาพความละเอียดสูง, เสียง, วิดีโอ หรือวัตถุไบนารีขนาดใหญ่ สามารถใช้หน่วยความจำอย่างมหาศาล LoadOptions.blob_management_options ให้การควบคุมการจัดการ BLOB และการใช้ไฟล์ชั่วคราว ดู Manage Presentation BLOBs สำหรับกลยุทธ์ไฟล์ขนาดใหญ่
สำหรับไฟล์ขนาดใหญ่ ควรโหลดจากเส้นทางไฟล์เมื่อเป็นไปได้ ปิดการนำเสนอแหล่งแต่ละไฟล์ทันทีหลังจากผสานแล้ว และหลีกเลี่ยงการบันทึกผลลัพธ์กลางหลายครั้ง เว้นแต่เวิร์กโฟลว์ต้องการจุดตรวจสอบ การใช้ with slides.Presentation(...) จะรับประกันว่าทรัพยากรการนำเสนอจะถูกปล่อยเมื่อออกจากบริบท
ความปลอดภัยของเธรด
ห้ามโหลด, บันทึก หรือโคลนอินสแตนซ์ของ Presentation พร้อมกันจากหลายเธรด ให้ทำการผสานแต่ละครั้งเป็นแบบ single‑threaded หากต้องการทำงานหลายงานผสานแบบขนาน ให้ใช้กระบวนการแยกแบบ single‑threaded และอินสแตนซ์การนำเสนอแยกต่างหากตามที่อธิบายใน Aspose.Slides multithreading guidance
FAQ
ฉันจะรักษาการออกแบบเดิมของการนำเสนอแต่ละแหล่งไว้ได้อย่างไร?
ใช้ add_clone โดยไม่ระบุมาสเตอร์หรือเลเอ็ตปลายทาง Aspose.Slides สามารถโคลนมาสเตอร์ของแหล่งโดยอัตโนมัติเมื่อสไลด์ที่นำเข้าต้องการมัน
ฉันจะทำให้สไลด์ที่นำเข้าใช้ธีมของปลายทางได้อย่างไร?
ใช้โอเวอร์โหลดที่รับมาสเตอร์ปลายทาง ส่งมาสเตอร์จากการนำเสนอปลายทาง ไม่ใช่จากแหล่ง Aspose.Slides จะพยายามแมปแต่ละสไลด์แหล่งไปยังเลเอ็ตที่เหมาะสมภายใต้มาสเตอร์นั้น
เมื่อใดควรใช้เลเอ็ตปลายทางเฉพาะแทนมาสเตอร์ปลายทาง?
ใช้เลเอ็ตเฉพาะเมื่อสไลด์ที่นำเข้าทุกสไลด์ควรใช้เลเอ็ตเดียวที่กำหนดไว้ ใช้มาสเตอร์เมื่อคุณต้องการให้ Aspose.Slides เลือกเลเอ็ตจากมาสเตอร์นั้นตามประเภทหรือชื่อของเลเอ็ตต้นฉบับ
สามารถผสานการนำเสนอที่มีขนาดสไลด์ต่างกันได้หรือไม่?
ได้ แต่เนื้อหาสไลด์จะไม่ออกแบบใหม่อัตโนมัติสำหรับมิติปลายทาง ให้ปรับขนาดการนำเสนอแหล่งก่อนโดยใช้ SlideSize.set_size และ SlideSizeScaleType.ENSURE_FIT
ฉันสามารถผสานไฟล์ PPT, PPTX, และ ODP ไปเป็นไฟล์เดียวได้หรือไม่?
ได้ โหลดแต่ละการนำเสนอแหล่ง, โคลนสไลด์ที่ต้องการเข้าสู่ปลายทางเดียว, แล้วบันทึกปลายทางในรูปแบบที่รองรับ อย่างไรก็ตามรูปแบบการนำเสนอบางรูปแบบอาจไม่สนับสนุนคุณลักษณะทั้งหมดเดียวกัน ตรวจสอบเนื้อหาซับซ้อนหลังการผสานข้ามรูปแบบ ดูที่ Supported File Formats
ส่วนของแหล่งจะถูกคงไว้อัตโนมัตหรือไม่?
ไม่ได้โดยลูปพื้นฐานที่โคลนสไลด์เท่านั้น ให้สร้างส่วนที่ต้องการในปลายทางและใช้โอเวอร์โหลดของ add_clone เมื่อโครงสร้างส่วนต้องคงไว้
โน๊ตและความคิดเห็นจะคงอยู่หรือไม่?
พวกมันจะถูกคัดลอกพร้อมสไลด์ที่โคลน สำหรับเวิร์กโฟลว์ที่พึ่งพาการจัดรูปแบบของโน๊ต‑มาสเตอร์, ผู้เขียนของความคิดเห็น, หรือข้อมูลการรีวิวแบบเธรด โปรดตรวจสอบผลลัพธ์ที่ผสานแล้ว เนื่องจากสถานการณ์เหล่านี้เกี่ยวข้องกับโครงสร้างระดับการนำเสนอเช่นกันกับระดับสไลด์
เสียง, วิดีโอ, วัตถุ OLE, และไฮเปอร์ลิงก์จะเกิดอะไรขึ้น?
เนื้อหาที่ฝังจะถูกพกพาเป็นส่วนหนึ่งของความสัมพันธ์ทรัพยากรของสไลด์ที่โคลน ลิงก์ภายนอกจะยังคงเป็นลิงก์ภายนอก ดังนั้นไฟล์หรือ URL ปลายทางต้องยังคงพร้อมใช้งานหลังการผสาน
ฟอนต์ที่ฝังจากทุกแหล่งจะมีในการนำเสนอที่ผสานแล้วหรือไม่?
อย่าพึ่งพาการโคลนสไลด์อย่างเดียวเพื่อการจัดจำหน่ายฟอนต์ ตรวจสอบฟอนต์ที่ฝังในปลายทางและจัดการการฝังฟอนต์หรือความพร้อมใช้งานของฟอนต์ภายนอกอย่างชัดเจนเมื่อ typography มีความสำคัญ
ฉันจะผสานไฟล์ที่ป้องกันด้วยรหัสผ่านอย่างไร?
เปิดไฟล์ด้วย LoadOptions.password ที่ถูกต้อง แล้วโคลนสไลด์ตามปกติ การป้องกันผลลัพธ์ต้องกำหนดแยกต่างหาก
ควรจัดการการนำเสนอขนาดใหญ่อย่างไร?
ใช้การจัดการ BLOB เมื่อวัตถุไบนารีขนาดใหญ่เป็นภาระหลักของหน่วยความจำ, โหลดจากเส้นทางไฟล์สำหรับไฟล์ขนาดใหญ่, ปิดการนำเสนอแหล่งโดยเร็วหลังการผสาน, และบันทึกผลลัพธ์ขั้นสุดท้ายเมื่อจำเป็น
ฉันสามารถผสานสไลด์จากหลายเธรดได้หรือไม่?
ห้ามโหลด, บันทึก, หรือโคลนอินสแตนซ์ของ Presentation จากหลายเธรดพร้อมกัน ให้ทำการผสานแต่ละครั้งเป็นแบบ single‑threaded หากต้องการทำงานหลายงานผสานแบบขนาน ให้ใช้กระบวนการแยกแบบ single‑threaded และอินสแตนซ์การนำเสนอแยกต่างหาก.