ผสานงานนำเสนออย่างมีประสิทธิภาพใน JavaScript

Contents
[ ]

ภาพรวม

Aspose.Slides for Node.js via Java ผสานงานนำเสนอด้วยการโคลนสไลด์จาก Presentation หนึ่งไปยังอีกอันหนึ่ง การทำงานหลักคือ SlideCollection.addClone ซึ่งสามารถคงรูปแบบของสไลด์ต้นทางไว้ได้หรือแนบสไลด์ที่โคลนไปยังมาสเตอร์หรือเลย์เอาต์ในงานนำเสนอปลายทาง

บทความนี้ครอบคลุมเวิร์กโฟลว์การผสานที่พบบ่อยที่สุด:

  • ผสานสไลด์ทั้งหมดพร้อมคงรูปแบบต้นทาง
  • ผสานสไลด์ที่เลือก
  • ใช้มาสเตอร์จากงานนำเสนอปลายทาง
  • ใช้เลย์เอาต์เฉพาะจากงานนำเสนอปลายทาง
  • ปรับขนาดสไลด์ที่ต่างกันก่อนผสาน
  • เพิ่มสไลด์ที่โคลนเข้าไปในส่วน (section)
  • ผสานหลายงานนำเสนอในเวิร์กโฟลว์แบบต้นถึงปลาย
  • จัดการมาสเตอร์, ทรัพยากร, โน้ต, ความคิดเห็น, สื่อ, ฟอนต์, รหัสผ่าน, ไฟล์ขนาดใหญ่, และประเด็นการทำงานหลายเธรด

ผลของการโคลนสไลด์ต่อมาสเตอร์และเลย์เอาต์

สไลด์สืบทอดรูปลักษณ์ส่วนใหญ่จากเลย์เอาต์และมาสเตอร์ ดังนั้นการเลือก overload ของการโคลนจะกำหนดว่าสไลด์ที่ผสานจะถูกผสานเข้ากับงานนำเสนอปลายทางอย่างไร

ใช้ SlideCollection.addClone หนึ่งในวิธีต่อไปนี้:

  • addClone(sourceSlide) — คงเลย์เอาต์และรูปแบบของสไลด์ต้นทาง เมื่อจำเป็น มาสเตอร์ต้นทางจะถูกโคลนเข้าไปในงานนำเสนอปลายทางโดยอัตโนมัติ Aspose.Slides จะติดตามมาสเตอร์ที่ถูกโคลนอัตโนมัติเพื่อไม่ให้สไลด์ที่ใช้มาสเตอร์เดียวกันถูกโคลนซ้ำหลายครั้ง
  • addClone(sourceSlide, destinationMaster, allowCloneMissingLayout) — แนบสไลด์ที่โคลนไปยัง MasterSlide ปลายทางที่ระบุ Aspose.Slides จะค้นหาเลย์เอาต์ที่ตรงกันภายใต้มาสเตอร์นั้นตามประเภทหรือชื่อของเลย์เอาต์
  • addClone(sourceSlide, destinationLayout) — แนบสไลด์ที่โคลนโดยตรงไปยัง LayoutSlide ปลายทางที่ระบุ

มาสเตอร์หรือเลย์เอาต์ที่ส่งให้ overload ของ addClone ต้องเป็นของ งานนำเสนอปลายทาง ไม่ใช่งานนำเสนอต้นทาง

ผสานงานนำเสนอทั้งหมดและคงรูปแบบต้นทาง

การผสานที่ง่ายที่สุดคือคัดลอกทุกสไลด์จากงานนำเสนอต้นทางไปยังงานนำเสนอปลายทาง นี้เป็นตัวเลือกที่เหมาะเมื่อสไลด์ที่นำเข้าต้องรักษาธีม, มาสเตอร์, และความสัมพันธ์ของเลย์เอาต์เดิมไว้

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    for (let i = 0; i < source.getSlides().size(); i++) {
        destination.getSlides().addClone(source.getSlides().get_Item(i));
    }

    destination.save("merged.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

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

ผสานสไลด์ที่เลือก

คุณไม่จำเป็นต้องโคลนทุกสไลด์ ตัวอย่างต่อไปนี้นำเข้าเฉพาะดัชนีสไลด์ที่เลือกจากงานนำเสนอต้นทาง

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    const slideIndexes = [0, 2, 4];

    for (const index of slideIndexes) {
        destination.getSlides().addClone(source.getSlides().get_Item(index));
    }

    destination.save("merged-selected-slides.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

ตรวจสอบดัชนีสไลด์ก่อนโคลนเมื่อมาจากข้อมูลผู้ใช้หรือการกำหนดค่าภายนอก

ผสานสไลด์โดยใช้มาสเตอร์ปลายทาง

ใช้ overload addClone(Slide, MasterSlide, boolean) เมื่อสไลด์ที่นำเข้าควรใช้งานมาสเตอร์ที่มีอยู่แล้วในงานนำเสนอปลายทาง

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    const destinationMaster = destination.getMasters().get_Item(0);

    for (let i = 0; i < source.getSlides().size(); i++) {
        destination.getSlides().addClone(source.getSlides().get_Item(i), destinationMaster, true);
    }

    destination.save("merged-with-destination-master.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

Aspose.Slides จะเลือกเลย์เอาต์ที่เหมาะสมภายใต้มาสเตอร์ที่ระบุโดยการจับคู่ประเภทหรือชื่อของเลย์เอาต์ต้นทาง หากไม่มีเลย์เอาต์ที่เหมาะสมและ allowCloneMissingLayout เป็น true เลย์เอาต์ต้นทางจะถูกโคลนเพื่อให้สไลด์สามารถเพิ่มได้ หากเป็น false จะเกิดการโยน PptxEditException

ใช้ false เมื่อคุณต้องการให้การผสานล้มเหลวแทนที่จะเพิ่มเลย์เอาต์ใหม่เข้าสู่มาสเตอร์ปลายทาง

ผสานสไลด์โดยใช้เลย์เอาต์ปลายทางเฉพาะ

ใช้ overload addClone(Slide, LayoutSlide) เมื่อคุณทราบเลย์เอาต์ปลายทางที่ต้องการให้สไลด์ที่นำเข้าใช้

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    const destinationLayout = destination.getLayoutSlides().get_Item(0);

    for (let i = 0; i < source.getSlides().size(); i++) {
        destination.getSlides().addClone(source.getSlides().get_Item(i), destinationLayout);
    }

    destination.save("merged-with-destination-layout.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

การใช้เลย์เอาต์ปลายทางเปลี่ยนความสัมพันธ์ของเลย์เอาต์ที่สืบทอด; มันไม่เปลี่ยนการออกแบบเนื้อหาของสไลด์ต้นทาง หากเลย์เอาต์ต้นทางและปลายทางมีโครงสร้าง placeholder ที่แตกต่างกัน ให้ตรวจสอบผลลัพธ์เพื่อยืนยันว่าการจัดรูปแบบและพฤติกรรมของ placeholder เหมาะสม

ผสานงานนำเสนอที่มีขนาดสไลด์ต่างกัน

งานนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานได้ แต่การโคลนสไลด์ไปยังงานนำเสนอที่มีขนาดสไลด์ต่างกันจะไม่ได้ออกแบบเนื้อหาใหม่อัตโนมัติเพื่อให้พอดีกับพื้นที่ใหม่ รูปร่างอาจถูกเลื่อนไป, ย่อ/ขยายอย่างไม่คาดคิด, หรืออยู่นอกพื้นที่สไลด์ที่มองเห็นได้

วิธีที่เป็นประโยชน์คือปรับขนาดงานนำเสนอต้นทางก่อนโคลน วิธีการ SlideSize.setSize สามารถสเกลเนื้อหาที่มีอยู่พร้อมเปลี่ยนขนาดสไลด์ได้ SlideSizeScaleType.EnsureFit จะสเกลเนื้อหาให้พอดีกับขนาดที่ต้องการ

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    const sourceSize = source.getSlideSize().getSize();
    const destinationSize = destination.getSlideSize().getSize();
    const sizesDiffer = sourceSize.getWidth() !== destinationSize.getWidth() || 
                        sourceSize.getHeight() !== destinationSize.getHeight();

    if (sizesDiffer) {
        source.getSlideSize().setSize(
            destinationSize.getWidth(), 
            destinationSize.getHeight(), 
            aspose.slides.SlideSizeScaleType.EnsureFit);
    }

    for (let i = 0; i < source.getSlides().size(); i++) {
        destination.getSlides().addClone(source.getSlides().get_Item(i));
    }

    destination.save("merged-same-slide-size.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

การปรับขนาดจะเปลี่ยนวัตถุงานนำเสนอต้นทางในหน่วยความจำ หากคุณต้องการให้งานนำเสนอต้นทางยังคงอยู่สำหรับการดำเนินการอื่น ๆ ให้เปิดอินสแตนซ์แยกสำหรับการผสาน

ผสานสไลด์เข้าส่วนของงานนำเสนอ

ลูปการโคลนสไลด์พื้นฐานจะไม่สร้างลำดับส่วน (section) ของงานนำแหล่งต้นทาง หากส่วนสำคัญในผลลัพธ์ ให้สร้างหรือเลือกส่วนในงานนำเสนอปลายทางและโคลนสไลด์เข้าไปในส่วนเหล่านั้นโดยใช้ addClone(Slide, Section)

const aspose = require("aspose.slides.via.java");

const destination = new aspose.slides.Presentation("destination.pptx");
const source = new aspose.slides.Presentation("source.pptx");
try {
    const importedSection = destination.getSections().appendEmptySection("Imported slides");

    for (let i = 0; i < source.getSlides().size(); i++) {
        destination.getSlides().addClone(source.getSlides().get_Item(i), importedSection);
    }

    destination.save("merged-with-section.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    source.dispose();
    destination.dispose();
}

สไลด์ที่โคลนจะถูกต่อท้ายส่วนปลายทางที่ระบุ เพื่อคงหลายส่วนต้นทาง ให้วนลูป Presentation.getSections ดึงสไลด์ของแต่ละส่วนด้วย Section.getSlidesListOfSection สร้างส่วนในปลายทางใหม่และโคลนสไลด์ที่ได้รับกลับเข้าไปในส่วนที่สอดคล้องกัน ดูตัวอย่างการจัดการส่วนสไลด์เต็มรูปแบบที่ Manage Slide Sections ซึ่งรวมถึงส่วนว่างและการเปลี่ยนแปลงโครงสร้าง

ผสานหลายงานนำเสนออย่างปลอดภัย

ตัวอย่างแบบต้นถึงปลายต่อไปนี้ใช้งานนำเสนอแรกเป็นปลายทาง, ปรับขนาดสไลด์ของแหล่งเพิ่มเติมแต่ละแหล่ง, เปิดแต่ละแหล่งเฉพาะในช่วงที่ทำการคัดลอก, และบันทึกไฟล์สุดท้ายครั้งเดียว

const aspose = require("aspose.slides.via.java");

const inputFiles = ["part1.pptx", "part2.pptx", "part3.pptx"];

const merged = new aspose.slides.Presentation(inputFiles[0]);
try {
    const mergedSize = merged.getSlideSize().getSize();

    for (let fileIndex = 1; fileIndex < inputFiles.length; fileIndex++) {
        const source = new aspose.slides.Presentation(inputFiles[fileIndex]);
        try {
            const sourceSize = source.getSlideSize().getSize();
            const sizesDiffer = sourceSize.getWidth() !== mergedSize.getWidth() || 
                                sourceSize.getHeight() !== mergedSize.getHeight();

            if (sizesDiffer) {
                source.getSlideSize().setSize(
                    mergedSize.getWidth(), 
                    mergedSize.getHeight(), 
                    aspose.slides.SlideSizeScaleType.EnsureFit);
            }

            for (let slideIndex = 0; slideIndex < source.getSlides().size(); slideIndex++) {
                merged.getSlides().addClone(source.getSlides().get_Item(slideIndex));
            }
        } finally {
            source.dispose();
        }
    }

    merged.save("merged.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    merged.dispose();
}

นี่เป็นแนวทางสำคัญสำหรับการคงรูปแบบต้นทางของสไลด์ที่นำเข้า หากผลลัพธ์ต้องใช้ธีมเดียวของปลายทาง ให้แทนที่การเรียก addClone(sourceSlide) อย่างง่ายด้วย overload มาสเตอร์หรือเลย์เอาต์ปลายทางที่แสดงไว้ก่อนหน้า

ข้อควรพิจารณาเชิงปฏิบัติ

มาสเตอร์, เลย์เอาต์, และความเที่ยงตรงของการจัดรูปแบบ

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

อย่าถือว่ามาสเตอร์หรือเลย์เอาต์สองตัวที่มีชื่อเดียวกันเป็นภาพลักษณ์ที่เท่ากัน หากเทมเพลตองค์กรต้องควบคุมรูปลักษณ์สุดท้าย ควรเลือกมาสเตอร์หรือเลย์เอาต์ปลายทางโดยเจตนาและตรวจสอบผลลัพธ์หลังการผสาน

โน้ตและความคิดเห็น

โน้ตผู้พูดและความเห็นบนสไลด์เชื่อมโยงกับเนื้อหาสไลด์และจะถูกคัดลอกเมื่อสไลด์ถูกโคลน Aspose.Slides ยังมี API เฉพาะสำหรับ presentation notes และ presentation comments

หากรูปแบบหน้าหนังสือโน้ตสำคัญ ให้ตรวจสอบงานนำเสนอที่ผสานแล้วเนื่องจากโน้ตมาสเตอร์เป็นอ็อบเจกต์ระดับงานนำเสนอและอาจแตกต่างกันระหว่างไฟล์ต้นทาง สำหรับเวิร์กโฟลว์การตรวจสอบ ให้ตรวจสอบผู้เขียนความเห็นและเธรดของความเห็นหลังการรวมไฟล์จากผู้เขียนหรือเทมเพลตที่ต่างกัน

รูปภาพ, เสียง, วิดีโอ, วัตถุ OLE, และลิงก์ภายนอก

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

ทรัพยากรที่ฝังและที่ลิงก์ควรจัดการแยกกัน ลิงก์เสียง, วิดีโอ, OLE หรือไฮเปอร์ลิงก์ที่ลิงก์ไว้จะยังคงพึ่งพาเป้าหมายภายนอก; การโคลนสไลด์จะไม่เปลี่ยนลิงก์ภายนอกให้เป็นเนื้อหาฝัง ทดสอบเส้นทางและ URL ของทรัพยากรที่ลิงก์ในสภาพแวดล้อมที่จะเปิดงานนำเสนอที่ผสานแล้ว

Aspose.Slides ติดตามมาสเตอร์ที่โคลนอัตโนมัติอย่างชัดเจน แต่ไม่ควรถือว่าเป็นการรับประกันทั่วไปว่าทรัพยากรไบนารีที่เหมือนกันจากงานนำเสนอแหล่งที่ไม่เกี่ยวข้องจะถูกลดทอนโดยอัตโนมัติ หากขนาดไฟล์ผลลัพธ์สำคัญ ให้ตรวจสอบแพ็กเกจที่ผสานและวัดผลลัพธ์แทนการพึ่งพาการลดทอนโดยนัย

ฟอนต์ฝังและความพร้อมใช้งานของฟอนต์

ฟอนต์ถูกจัดการระดับงานนำเสนอ หากต้องการให้การพิมพ์ข้อความคงที่บนอุปกรณ์ต่าง ๆ อย่ assumesว่าการโคลนสไลด์เพียงอย่างเดียวทำให้ฟอนต์ที่จำเป็นทั้งหมดพร้อมใช้งานในสภาพแวดล้อมปลายทาง คุณสามารถตรวจสอบฟอนต์ที่ฝังด้วย FontsManager.getEmbeddedFonts และจัดการการฝังอย่างชัดเจนตามที่อธิบายใน Embed Fonts in Presentations

นอกจากนี้ตรวจสอบว่าคุณได้รับอนุญาตให้ฝังฟอนต์ที่ใช้ในไฟล์ต้นทางหรือไม่ ใบอนุญาตฟอนต์อาจจำกัดการฝัง

งานนำเสนอที่มีรหัสผ่าน

แหล่งที่มีรหัสผ่านต้องเปิดสำเร็จก่อนที่สไลด์จะถูกโคลน ให้ใส่รหัสผ่านผ่าน LoadOptions.setPassword

const aspose = require("aspose.slides.via.java");

const loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");

const source = new aspose.slides.Presentation("protected.pptx", loadOptions);
try {
    // ทำงานกับการนำเสนอที่ถอดรหัสแล้ว.
} finally {
    source.dispose();
}

การเปิดไฟล์ที่เข้ารหัสจะไม่ทำให้งานนำเสนอปลายทางได้รับการปกป้องแบบเดียวโดยอัตโนมัติ จำเป็นต้องกำหนดการปกป้องผลลัพธ์แยกต่างหากเมื่อจำเป็น

งานนำเสนอขนาดใหญ่และการใช้หน่วยความจำ

งานนำเสนอขนาดใหญ่ที่มีรูปภาพความละเอียดสูง, เสียง, วิดีโอ หรือไบต์ข้อมูลขนาดใหญ่อื่น ๆ สามารถใช้หน่วยความจำมาก LoadOptions.getBlobManagementOptions มีตัวเลือกสำหรับการจัดการ BLOB และการใช้ไฟล์ชั่วคราว ดู Manage Presentation BLOBs สำหรับกลยุทธ์ไฟล์ขนาดใหญ่

สำหรับไฟล์ขนาดใหญ่ ให้โหลดจากพาธไฟล์เมื่อเป็นไปได้, ปิดการใช้งานงานนำเสนอแหล่งทันทีหลังการผสาน, และหลีกเลี่ยงการบันทึกผลลัพธ์กลางหลายครั้ง เว้นแต่เวิร์กโฟลว์ต้องการจุดตรวจ

ความปลอดภัยของเธรด

ห้ามโหลด, บันทึก, หรือโคลนอินสแตนซ์ของ Presentation ในหลายเธรด การดำเนินการเหล่านี้ไม่ได้รับการสนับสนุนสำหรับการใช้หลายเธรด หากต้องการทำงานผสานแบบขนานให้ใช้หลายกระบวนการแบบเดี่ยว (single‑threaded) แต่ละกระบวนการมีอินสแตนซ์งานนำเสนอของตนเอง และปฏิบัติตาม Aspose.Slides multithreading guidance

FAQ

ฉันจะรักษาการออกแบบเดิมของแต่ละงานนำเสนออย่างไร?

ใช้ addClone โดยไม่ระบุมาสเตอร์หรือเลย์เอาต์ปลายทาง Aspose.Slides สามารถโคลนมาสเตอร์ต้นทางโดยอัตโนมัติเมื่อสไลด์ที่นำเข้าต้องการมัน

ฉันจะทำให้สไลด์ที่นำเข้าใช้ธีมของปลายทางอย่างไร?

ใช้ overload ที่รับมาสเตอร์ปลายทาง ส่งมาสเตอร์จากงานนำเสนอปลายทาง ไม่ใช่จากต้นทาง Aspose.Slides จะพยายามแมปสไลด์ต้นทางแต่ละสไลด์ไปยังเลย์เอาต์ที่เหมาะสมภายใต้มาสเตอร์นั้น

ควรใช้เลย์เอาต์ปลายทางเฉพาะเมื่อไหร่ แทนมาสเตอร์ปลายทาง?

ใช้เลย์เอาต์เฉพาะเมื่อสไลด์ที่นำเข้าทุกสไลด์ควรใช้เลย์เอาต์เดียวที่รู้จัก ใช้มาสเตอร์เมื่อคุณต้องการให้ Aspose.Slides เลือกเลย์เอาต์จากมาสเตอร์นั้นตามประเภทหรือชื่อของเลย์เอาต์ต้นทาง

งานนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานได้หรือไม่?

ได้ แต่เนื้อหาสไลด์จะไม่ถูกออกแบบใหม่อัตโนมัติเพื่อให้เข้ากับมิติปลายทาง ปรับขนาดงานนำเสนอต้นทางก่อนเมื่อคุณต้องการการวางตำแหน่งที่คาดการณ์ได้ เช่นใช้ SlideSize.setSize และ SlideSizeScaleType.EnsureFit

ฉันสามารถผสานไฟล์ PPT, PPTX, และ ODP เป็นไฟล์เดียวได้หรือไม่?

ได้ เปิดแต่ละงานนำเสนอแหล่ง, โคลนสไลด์ที่ต้องการเข้าสู่งานนำเสนอปลายทางหนึ่ง และบันทึกปลายทางในรูปแบบที่สนับสนุน เนื่องจากฟอร์แมตงานนำเสนอแต่ละแบบอาจมีชุดคุณสมบัติที่แตกต่างกัน ให้ตรวจสอบเนื้อหาซับซ้อนหลังการผสานข้ามฟอร์แมต ดูที่ Supported File Formats

ส่วนต้นทางจะถูกคงไว้โดยอัตโนมัติหรือไม่?

ไม่กับลูปพื้นฐานที่เพียงโคลนสไลด์เท่านั้น ให้สร้างส่วนที่ต้องการในปลายทางและใช้ overload ส่วนของ addClone เมื่อโครงสร้างส่วนต้องคงไว้

โน้ตผู้พูดและความคิดเห็นจะถูกคงไว้หรือไม่?

พวกมันจะถูกคัดลอกพร้อมสไลด์ที่โคลน สำหรับเวิร์กโฟลว์ที่ต้องพึ่งพาการจัดสไตล์ของโน้ตมาสเตอร์, ผู้เขียนความคิดเห็น, หรือข้อมูลการตรวจสอบแบบเธรด ให้ตรวจสอบผลลัพธ์ที่ผสาน เพราะสถานการณ์เหล่านั้นเกี่ยวข้องกับโครงสร้างระดับงานนำเสนอและระดับสไลด์พร้อมกัน

เสียง, วิดีโอ, วัตถุ OLE, และไฮเปอร์ลิงก์จะเกิดอะไรขึ้น?

เนื้อหาที่ฝังจะถูกนำมาพร้อมกับความสัมพันธ์ของทรัพยากรในสไลด์ที่โคลน ลิงก์ภายนอกจะคงเป็นลิงก์ภายนอก ดังนั้นไฟล์หรือ URL เป้าหมายต้องยังคงเข้าถึงได้หลังการผสาน

ฟอนต์ฝังจากทุกแหล่งจะได้รับการรับประกันว่าพร้อมใช้งานในงานนำเสนอที่ผสานหรือไม่?

อย่าอาศัยการโคลนสไลด์อย่างเดียวสำหรับการจัดหาฟอนต์ ตรวจสอบฟอนต์ที่ฝังในปลายทางและจัดการการฝังฟอนต์หรือความพร้อมของฟอนต์ภายนอกอย่างชัดเจนเมื่อการพิมพ์ข้อความมีความสำคัญ

ฉันจะผสานไฟล์ที่มีรหัสผ่านได้อย่างไร?

เปิดไฟล์ด้วย LoadOptions.setPassword ที่ถูกต้อง แล้วโคลนสไลด์ตามปกติ การปกป้องผลลัพธ์ต้องกำหนดแยกต่างหาก

ฉันควรจัดการงานนำเสนอขนาดใหญ่อย่างไร?

ใช้การจัดการ BLOB เมื่อวัตถุไบนารีขนาดใหญ่เป็นสาเหตุการใช้หน่วยความจำ, โหลดจากพาธไฟล์สำหรับไฟล์ขนาดใหญ่อย่างเต็มที่, ปิดการใช้งานงานนำเสนอแหล่งทันทีหลังการผสาน, และบันทึกผลลัพธ์สุดท้ายเมื่อจำเป็นเท่านั้น

ฉันสามารถผสานสไลด์จากหลายเธรดได้หรือไม่?

ห้ามโหลด, บันทึก, หรือโคลนอินสแตนซ์ของงานนำเสนอในหลายเธรด สำหรับงานผสานแบบขนาน ให้ใช้กระบวนการเดี่ยวหลายตัวที่มีอินสแตนซ์งานนำเสนอแยกกัน.