ผสานการนำเสนออย่างมีประสิทธิภาพใน Python ผ่าน Java
Overview
Aspose.Slides for Python via Java ผสานการนำเสนอโดยการโคลนสไลด์จากหนึ่ง Presentation ไปยังอีกอันหนึ่ง การดำเนินการหลักคือ SlideCollection.addClone ซึ่งสามารถรักษาการจัดรูปแบบของสไลด์ต้นทางหรือแนบสไลด์ที่โคลนไว้ไปยังมาสเตอร์หรือเลเอาท์ในการนำเสนอปลายทางได้
บทความนี้ครอบคลุมเวิร์กโฟลว์การผสานที่พบบ่อยที่สุด:
- ผสานสไลด์ทั้งหมดพร้อมรักษาการจัดรูปแบบของต้นทาง
- ผสานสไลด์ที่เลือกเท่านั้น
- ใช้มาสเตอร์จากการนำเสนอปลายทาง
- ใช้เลเอาท์เฉพาะจากการนำเสนอปลายทาง
- ปรับขนาดสไลด์ให้เท่ากันก่อนการผสาน
- เพิ่มสไลด์ที่โคลนเข้าไปในเซคชัน
- ผสานการนำเสนอหลายไฟล์ในเวิร์กโฟลว์แบบครบวงจร
- จัดการมาสเตอร์, ทรัพยากร, โน้ต, ความคิดเห็น, สื่อ, ฟอนต์, รหัสผ่าน, ไฟล์ขนาดใหญ่, และประเด็นการทำงานหลายเธรด
How Slide Cloning Affects Masters and Layouts
สไลด์สืบทอดรูปลักษณ์ส่วนใหญ่จากเลเอาท์และมาสเตอร์ ดังนั้นการเลือกอับโหลดของการโคลนจะกำหนดวิธีที่สไลด์ที่ผสานเข้ากับการนำเสนอปลายทาง
ใช้ SlideCollection.addClone อย่างใดอย่างหนึ่งต่อไปนี้:
addClone(source_slide)— รักษาเลเอาท์และการจัดรูปแบบของสไลด์ต้นทาง เมื่อจำเป็น มาสเตอร์ต้นทางจะถูกโคลนเข้าสู่การนำเสนอปลายทางโดยอัตโนมัติ Aspose.Slides จะติดตามมาสเตอร์ที่โคลนโดยอัตโนมัติเพื่อไม่ให้สไลด์ที่ใช้มาสเตอร์เดียวกันถูกโคลนซ้ำหลายครั้งaddClone(source_slide, destination_master, allow_clone_missing_layout)— แนบสไลด์ที่โคลนไปยัง MasterSlide ปลายทางที่กำหนด Aspose.Slides จะค้นหาเลเอาท์ที่ตรงกันภายใต้มาสเตอร์นั้นโดยประเภทหรือชื่อของเลเอาท์addClone(source_slide, destination_layout)— แนบสไลด์ที่โคลนโดยตรงไปยัง LayoutSlide ปลายทางที่กำหนด
มาสเตอร์หรือเลเอาท์ที่ส่งให้กับอับโหลด addClone ต้องเป็นของ การนำเสนอปลายทาง ไม่ใช่ของการนำเสนอต้นทาง
Merge Entire Presentations and Preserve Source Formatting
การผสานที่ง่ายที่สุดคือคัดลอกสไลด์ทุกสไลด์จากการนำเสนอต้นทางไปยังการนำเสนอปลายทาง วิธีนี้เหมาะเมื่อสไลด์ที่นำเข้าต้องรักษาธีม, มาสเตอร์, และความสัมพันธ์ของเลเอาท์เดิมไว้
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
for slide in source.getSlides():
destination.getSlides().addClone(slide)
finally:
source.dispose()
destination.save("merged.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
ผลลัพธ์อาจมีมาสเตอร์หลายชุดเมื่อต้นทางและปลายทางใช้ดีไซน์ที่แตกต่างกัน ซึ่งเป็นพฤติกรรมที่คาดไว้เมื่อรักษาการจัดรูปแบบของต้นทางอย่างตั้งใจ
Merge Selected Slides
คุณไม่จำเป็นต้องโคลนทุกสไลด์ ตัวอย่างต่อไปนี้นำเข้าเฉพาะสไลด์ที่เลือกจากการนำเสนอต้นทาง
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
slide_indexes = [0, 2, 4]
for index in slide_indexes:
if 0 <= index < source.getSlides().size():
destination.getSlides().addClone(source.getSlides().get_Item(index))
else:
print(f"Skipping invalid slide index: {index}")
finally:
source.dispose()
destination.save("merged-selected-slides.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
ตรวจสอบดัชนีสไลด์ก่อนการโคลนเมื่อดัชนีมาจากการป้อนข้อมูลของผู้ใช้หรือการกำหนดค่าภายนอก
Merge Slides Using a Destination Master
ใช้การอับโหลดของ SlideCollection.addClone เมื่อสไลด์ที่นำเข้าควรทำตามมาสเตอร์ที่มีอยู่แล้วในการนำเสนอปลายทาง
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
destination_master = destination.getMasters().get_Item(0)
for slide in source.getSlides():
destination.getSlides().addClone(slide, destination_master, True)
finally:
source.dispose()
destination.save("merged-with-destination-master.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
Aspose.Slides จะเลือกเลเอาท์ที่เหมาะสมภายใต้มาสเตอร์ที่ระบุโดยการแมพประเภทหรือชื่อของเลเอาท์ต้นทาง หากไม่มีเลเอาท์ที่เหมาะสมและ allow_clone_missing_layout มีค่าเป็น True เลเอาท์ต้นทางจะถูกโคลนเพื่อให้สไลด์สามารถเพิ่มได้ หากเป็น False จะเกิด PptxEditException ขึ้น
ใช้ค่า False เมื่อคุณต้องการให้การผสานล้มเหลวแทนที่จะเพิ่มเลเอาท์ใหม่เข้าไปในมาสเตอร์ปลายทาง
Merge Slides Using a Specific Destination Layout
ใช้การอับโหลดของ SlideCollection.addClone เมื่อคุณทราบเลเอาท์ปลายทางที่สไลด์ที่นำเข้าควรใช้อย่างชัดเจน
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
destination_layout = destination.getLayoutSlides().get_Item(0)
for slide in source.getSlides():
destination.getSlides().addClone(slide, destination_layout)
finally:
source.dispose()
destination.save("merged-with-destination-layout.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
การใช้เลเอาท์ปลายทางจะเปลี่ยนความสัมพันธ์ของเลเอาท์ที่สืบทอด; ไม่ได้ออกแบบเนื้อหาของสไลด์ต้นทางใหม่ หากเลเอาท์ต้นทางและปลายทางมีโครงสร้าง placeholder ที่แตกต่างกัน ให้ตรวจสอบผลลัพธ์เพื่อยืนยันว่าการจัดรูปแบบและพฤติกรรมของ placeholder ที่สืบทอดนั้นเหมาะสม
Merge Presentations with Different Slide Sizes
การนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานกันได้ แต่การโคลนสไลด์ลงในการนำเสนอที่มีขนาดสไลด์อื่นไม่ทำให้เนื้อหาออกแบบใหม่โดยอัตโนมัติสำหรับพื้นผิวใหม่ รูปร่างอาจปรากฏเป็นการย้าย, การยืดหรือหดที่ไม่คาดคิด, หรืออยู่นอกพื้นที่สไลด์ที่มองเห็นได้
วิธีปฏิบัติที่ใช้ได้คือปรับขนาดการนำเสนอต้นทางก่อนการโคลน วิธี SlideSize.setSize สามารถสเกลเนื้อหาที่มีอยู่ขณะเปลี่ยนขนาดสไลด์ได้ ส่วน SlideSizeScaleType.EnsureFit จะสเกลเนื้อหาให้พอดีกับขนาดที่กำหนด
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideSizeScaleType
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
source_size = source.getSlideSize().getSize()
destination_size = destination.getSlideSize().getSize()
width = jpype.JFloat(destination_size.getWidth())
height = jpype.JFloat(destination_size.getHeight())
if source_size.getWidth() != width or source_size.getHeight() != height:
source.getSlideSize().setSize(width, height, SlideSizeScaleType.EnsureFit)
for slide in source.getSlides():
destination.getSlides().addClone(slide)
finally:
source.dispose()
destination.save("merged-same-slide-size.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
การปรับขนาดจะเปลี่ยนวัตถุการนำเสนอต้นทางในหน่วยความจำ หากคุณต้องการให้การนำเสนอต้นทางต้นฉบับคงอยู่โดยไม่เปลี่ยนแปลงสำหรับการดำเนินการอื่น ให้เปิดอินสแตนซ์แยกสำหรับการผสาน
Merge Slides into a Presentation Section
ลูปการโคลนสไลด์พื้นฐานจะไม่สร้างโครงสร้างเซคชันของการนำเสนอต้นทาง หากเซคชันมีความสำคัญในผลลัพธ์ ให้สร้างหรือเลือกเซคชันในการนำเสนอปลายทางและโคลนสไลด์เข้าไปในเซคชันโดยใช้ SlideCollection.addClone อย่างชัดเจน
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
destination = Presentation("destination.pptx")
try:
source = Presentation("source.pptx")
try:
imported_section = destination.getSections().appendEmptySection("Imported slides")
for slide in source.getSlides():
destination.getSlides().addClone(slide, imported_section)
finally:
source.dispose()
destination.save("merged-with-section.pptx", SaveFormat.Pptx)
finally:
destination.dispose()
สไลด์ที่โคลนจะถูกเพิ่มต่อท้ายในเซคชันปลายทางที่ระบุ เพื่อรักษาเซคชันต้นทางหลายเซคชัน ให้เรียกใช้ Presentation.getSections เพื่อวนลูปเซคชัน, ดึงสไลด์ในแต่ละเซคชันด้วย Section.getSlidesListOfSection, สร้างเซคชันใหม่ในปลายทาง, และโคลนสไลด์ที่ได้เข้าไปในเซคชันที่สอดคล้องกัน ดูตัวอย่างการจัดการเซคชันเต็มรูปแบบใน Manage Slide Sections รวมถึงเซคชันว่างและการเปลี่ยนแปลงโครงสร้าง
Merge Multiple Presentations Safely
ตัวอย่างแบบครบวงจรต่อไปนี้ใช้การนำเสนอแรกเป็นปลายทาง, ปรับขนาดสไลด์ของแต่ละแหล่งเพิ่มเติม, เปิดแต่ละแหล่งเฉพาะขณะทำการคัดลอก, และบันทึกไฟล์สุดท้ายเมื่อเสร็จสิ้น
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, SlideSizeScaleType
input_files = ["part1.pptx", "part2.pptx", "part3.pptx"]
merged = Presentation(input_files[0])
try:
merged_size = merged.getSlideSize().getSize()
width = jpype.JFloat(merged_size.getWidth())
height = jpype.JFloat(merged_size.getHeight())
for input_file in input_files[1:]:
source = Presentation(input_file)
try:
source_size = source.getSlideSize().getSize()
if source_size.getWidth() != width or source_size.getHeight() != height:
source.getSlideSize().setSize(width, height, SlideSizeScaleType.EnsureFit)
for slide in source.getSlides():
merged.getSlides().addClone(slide)
finally:
source.dispose()
merged.save("merged.pptx", SaveFormat.Pptx)
finally:
merged.dispose()
นี่เป็นจุดเริ่มต้นที่มีประโยชน์สำหรับการรักษาการจัดรูปแบบของสไลด์ที่นำเข้า หากผลลัพธ์ของคุณต้องใช้ธีมเดียวของปลายทาง ให้เปลี่ยนการเรียก addClone(slide) ธรรมดาเป็นอับโหลดมาสเตอร์หรือเลเอาท์ปลายทางที่แสดงไว้ข้างต้น
Practical Considerations
Masters, Layouts, and Formatting Fidelity
การโคลนสไลด์แบบเริ่มต้นสามารถนำมาสเตอร์ต้นทางที่จำเป็นเข้ามาในการนำเสนอปลายทางโดยอัตโนมัติ Aspose.Slides จะเก็บทะเบียนภายในสำหรับมาสเตอร์ที่โคลนโดยอัตโนมัติเพื่อหลีกเลี่ยงการโคลนมาสเตอร์เดียวกันหลายครั้ง มาสเตอร์ที่โคลนด้วยมือไม่ได้รับการติดตามในทะเบียนนั้น ดังนั้นหลีกเลี่ยงการโคลนมาสเตอร์ล่วงหน้าเว้นแต่คุณต้องการควบคุมโครงสร้างมาสเตอร์อย่างชัดเจน
อย่าสมมติว่ามาสเตอร์หรือเลเอาท์สองชุดที่มีชื่อเดียวกันมีลักษณะทางภาพเท่ากัน หากเทมเพลตองค์กรต้องควบคุมรูปลักษณ์สุดท้าย ให้เลือกมาสเตอร์หรือเลเอาท์ปลายทางอย่างชัดเจนและตรวจสอบผลลัพธ์หลังการผสาน
Notes and Comments
โน้ตผู้บรรยายและความคิดเห็นสไลด์ถูกเชื่อมโยงกับเนื้อหาสไลด์และจะถูกคัดลอกเมื่อสไลด์ถูกโคลน Aspose.Slides ยังมี API เฉพาะสำหรับ presentation notes และ presentation comments
หากการจัดรูปแบบหน้าโน้ตสำคัญ ให้ตรวจสอบการนำเสนอที่ผสานแล้วเพราะโน้ตมาสเตอร์เป็นอ็อบเจ็กต์ระดับการนำเสนอและอาจแตกต่างกันระหว่างไฟล์ต้นทาง สำหรับกระบวนการตรวจสอบ ให้ตรวจสอบผู้เขียนความคิดเห็นและเธรดของความคิดเห็นหลังจากรวมไฟล์จากผู้เขียนหรือเทมเพลตต่างกัน
Images, Audio, Video, OLE Objects, and External Links
สไลด์อาจอ้างอิงทรัพยากรระดับการนำเสนอ เช่น รูปภาพ, ไฟล์เสียงฝัง, วิดีโอฝัง, และข้อมูล OLE ให้โคลนสไลด์ทั้งหมดแทนการคัดลอกเฉพาะรูปร่างที่มองเห็นได้ เพื่อให้ Aspose.Slides รักษาความสัมพันธ์ของสไลด์ต่อทรัพยากรเหล่านั้น
ทรัพยากรที่ฝังและที่ลิงก์ควรจัดการแตกต่างกัน ลิงก์ไฟล์เสียง, วิดีโอ, OLE หรือไฮเปอร์ลิงก์ที่ลิงก์อยู่ยังคงพึ่งพาเป้าหมายภายนอก; การโคลนสไลด์ไม่ทำให้ลิงก์ภายนอกกลายเป็นเนื้อหาฝัง ทดสอบเส้นทางและ URL ของทรัพยากรลิงก์ในสภาพแวดล้อมที่การนำเสนอที่ผสานจะถูกเปิด
Aspose.Slides ติดตามมาสเตอร์ที่โคลนโดยอัตโนมัติ แต่ไม่ควรถือเป็นการรับประกันทั่วไปว่าทรัพยากรไบนารีที่เหมือนกันจากแหล่งต้นทางที่ไม่เกี่ยวข้องจะถูกทำซ้ำอัตโนมัติ หากขนาดไฟล์ผลลัพธ์สำคัญ ให้ตรวจสอบแพ็กเกจที่ผสานและวัดผลลัพธ์แทนการพึ่งพาการทำซ้ำโดยอัตโนมัติ
Embedded Fonts and Font Availability
ฟอนต์จัดการระดับการนำเสนอ หากต้องการให้การพิมพ์แบบเดียวกันบนเครื่องต่าง ๆ อย่าสมมติว่าการโคลนสไลด์อย่างเดียวจะทำให้ฟอนต์ที่จำเป็นทั้งหมดพร้อมใช้งานในสภาพแวดล้อมปลายทาง คุณสามารถตรวจสอบฟอนต์ที่ฝังด้วย FontsManager.getEmbeddedFonts และจัดการการฝังฟอนต์อย่างชัดเจนตามที่อธิบายใน Embed Fonts in Presentations
นอกจากนี้ให้ตรวจสอบว่าคุณได้รับอนุญาตให้ฝังฟอนต์ที่ใช้ในไฟล์ต้นทางหรือไม่ เนื่องจากสัญญาอนุญาตฟอนต์อาจจำกัดการฝัง
Password-Protected Presentations
แหล่งที่มีการป้องกันด้วยรหัสผ่านต้องเปิดสำเร็จก่อนจึงจะโคลนสไลด์ได้ ให้ใส่รหัสผ่านผ่าน LoadOptions.setPassword
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, LoadOptions
load_options = LoadOptions()
load_options.setPassword("YOUR_PASSWORD")
source = Presentation("protected.pptx", load_options)
try:
# ทำงานกับการนำเสนอที่ถอดรหัสแล้ว.
print(f"Loaded {source.getSlides().size()} slides.")
finally:
source.dispose()
การเปิดไฟล์ที่เข้ารหัสไม่ได้ทำให้การป้องกันเดียวกันถูกนำไปใช้กับการนำเสนอปลายทางโดยอัตโนมัติ ให้กำหนดการป้องกันผลลัพธ์แยกต่างหากเมื่อจำเป็น
Large Presentations and Memory Use
การนำเสนอขนาดใหญ่ที่มีรูปภาพความละเอียดสูง, ไฟล์เสียง, วิดีโอ, หรือวัตถุไบนารีขนาดใหญ่อาจใช้หน่วยความจำมาก LoadOptions.getBlobManagementOptions ให้ตัวเลือกควบคุมการจัดการ BLOB และการใช้ไฟล์ชั่วคราว ดู Manage Presentation BLOBs สำหรับกลยุทธ์ไฟล์ขนาดใหญ่
สำหรับไฟล์ใหญ่ ให้โหลดจากเส้นทางไฟล์เมื่อเป็นไปได้, ปล่อยการนำเสนอแหล่งต้นทางโดยเร็วเมื่อนำมาผสานแล้ว, และหลีกเลี่ยงการบันทึกผลลัพธ์ระหว่างขั้นตอนหลายครั้ง เว้นแต่เวิร์กโฟลว์ต้องการจุดตรวจสอบ
Thread Safety
อย่าโหลด, แก้ไข, บันทึก หรือโคลนอินสแตนซ์เดียวของ Presentation พร้อมกันจากหลายเธรด ให้แต่ละอินสแตนซ์ของการนำเสนออยู่ในงานผสานหนึ่งงาน หากคุณทำงานแบบขนานให้ใช้อินสแตนซ์การนำเสนอแยกต่างหากและปฏิบัติตามแนวทาง Aspose.Slides multithreading guidance
FAQ
How do I keep each source presentation’s original design?
ใช้ addClone โดยไม่ระบุมาสเตอร์หรือเลเอาท์ปลายทาง Aspose.Slides สามารถโคลนมาสเตอร์ต้นทางโดยอัตโนมัติเมื่อสไลด์ที่นำเข้าต้องการ
How do I make imported slides use the destination theme?
ใช้การอับโหลดที่รับมาสเตอร์ปลายทาง ส่งมาสเตอร์จากการนำเสนอปลายทาง ไม่ใช่จากต้นทาง Aspose.Slides จะพยายามแมพสไลด์แต่ละอันไปยังเลเอาท์ที่เหมาะสมภายใต้มาสเตอร์นั้น
When should I use a specific destination layout instead of a destination master?
ใช้เลเอาท์เฉพาะเมื่อสไลด์ที่นำเข้าทุกสไลด์ต้องใช้เลเอาท์ที่ทราบล่วงหน้า ใช้มาสเตอร์เมื่อคุณต้องการให้ Aspose.Slides เลือกเลเอาท์จากมาสเตอร์นั้นตามประเภทหรือชื่อของเลเอาท์ต้นทาง
Can presentations with different slide sizes be merged?
ได้ แต่เนื้อหาสไลด์จะไม่ถูกออกแบบใหม่อัตโนมัติสำหรับมิติปลายทาง ให้ปรับขนาดการนำเสนอต้นทางก่อนเมื่อจำเป็นต้องการตำแหน่งที่คาดเดาได้ เช่นใช้ SlideSize.setSize และ SlideSizeScaleType.EnsureFit
Can I merge PPT, PPTX, and ODP presentations into one file?
ได้ โหลดแต่ละการนำเสนอต้นทาง, โคลนสไลด์ที่ต้องการเข้าสู่ปลายทางหนึ่งไฟล์, แล้วบันทึกปลายทางในฟอร์แมตที่รองรับ เนื่องจากฟอร์แมตการนำเสนออาจไม่มีคุณลักษณะเดียวกันทั้งหมด ให้ตรวจสอบเนื้อหาซับซ้อนหลังการผสานข้ามฟอร์แมต ดู Supported File Formats
Are source sections preserved automatically?
ไม่ด้วยลูปพื้นฐานที่โคลนสไลด์เท่านั้น ต้องสร้างเซคชันที่ต้องการในปลายทางและใช้การอับโหลดของ addClone เมื่อโครงสร้างเซคชันต้องถูกรักษา
Are speaker notes and comments preserved?
พวกเขาถูกคัดลอกพร้อมสไลด์ที่โคลน สำหรับเวิร์กโฟลว์ที่พึ่งพาการจัดรูปแบบโน้ตมาสเตอร์, ผู้เขียนความคิดเห็น, หรือข้อมูลการรีวิวแบบเธรด ให้ตรวจสอบผลลัพธ์ที่ผสานเนื่องจากสถานการณ์เหล่านั้นเกี่ยวข้องกับโครงสร้างระดับการนำเสนอเช่นเดียวกับระดับสไลด์
What happens to audio, video, OLE objects, and hyperlinks?
เนื้อหาที่ฝังจะถูกพกพาเป็นส่วนหนึ่งของความสัมพันธ์ทรัพยากรของสไลด์ที่โคลน ลิงก์ภายนอกจะคงอยู่เป็นลิงก์ภายนอก ดังนั้นไฟล์หรือ URL ปลายทางต้องยังคงพร้อมใช้หลังการผสาน
Are embedded fonts from every source guaranteed to be available in the merged presentation?
อย่าพึ่งพาการโคลนสไลด์เท่านั้นสำหรับการจัดจำหน่ายฟอนต์ ตรวจสอบฟอนต์ที่ฝังในปลายทางและจัดการการฝังฟอนต์หรือความพร้อมของฟอนต์ภายนอกอย่างชัดเจนเมื่อการพิมพ์แบบสำคัญ
How do I merge a password-protected file?
เปิดไฟล์ด้วย LoadOptions.setPassword ที่ถูกต้อง แล้วโคลนสไลด์ตามปกติ การป้องกันผลลัพธ์ต้องกำหนดแยกต่างหาก
How should I handle very large presentations?
ใช้การจัดการ BLOB เมื่อวัตถุไบนารีขนาดใหญ่เป็นส่วนใหญ่ของการใช้หน่วยความจำ, เลือกโหลดจากเส้นทางไฟล์สำหรับไฟล์ขนาดใหญ่อย่างเต็มที่, ปล่อยการนำเสนอแหล่งต้นทางโดยเร็วหลังการผสาน, และบันทึกผลลัพธ์สุดท้ายเมื่อจำเป็นเท่านั้น
Can I merge slides from multiple threads?
อย่าใช้อินสแตนซ์เดียวของ Presentation พร้อมกันจากหลายเธรด ให้แต่ละงานผสานแยกกันโดยใช้อินสแตนซ์การนำเสนอของตนเอง