ผสานการนำเสนออย่างมีประสิทธิภาพใน PHP
ภาพรวม
Aspose.Slides for PHP 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 ต้องเป็นของ งานนำเสนอปลายทาง ไม่ใช่งานนำเสนอแหล่ง
ผสานการนำเสนอทั้งหมดและคงรูปแบบต้นฉบับ
วิธีการผสานที่ง่ายที่สุดคือคัดลอกสไลด์ทุกสไลด์จากงานนำเสนอแหล่งไปยังงานนำเสนอปลายทาง นี่เป็นตัวเลือกที่เหมาะเมื่อสไลด์ที่นำเข้าต้องรักษาธีม, มาสเตอร์, และความสัมพันธ์ของเลเอาต์เดิมไว้
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
foreach ($source->getSlides() as $slide) {
$destination->getSlides()->addClone($slide);
}
} finally {
$source->dispose();
}
$destination->save("merged.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
ผลลัพธ์อาจมีมาสเตอร์หลายชุดเมื่อแหล่งและปลายทางใช้ดีไซน์ต่างกัน ซึ่งเป็นการคาดหวังเมื่อต้องการคงรูปแบบต้นฉบับไว้
ผสานสไลด์ที่เลือก
คุณไม่จำเป็นต้องโคลนสไลด์ทั้งหมด ตัวอย่างต่อไปนี้นำเข้าเฉพาะสไลด์ที่เลือกตามดัชนีจากงานนำเสนอแหล่ง
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
$slideIndexes = [0, 2, 4];
foreach ($slideIndexes as $index) {
$destination->getSlides()->addClone($source->getSlides()->get_Item($index));
}
} finally {
$source->dispose();
}
$destination->save("merged-selected-slides.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
ตรวจสอบดัชนีสไลด์ก่อนโคลนเมื่อมาจากข้อมูลผู้ใช้หรือการกำหนดค่าภายนอก
ผสานสไลด์โดยใช้มาสเตอร์ปลายทาง
ใช้ overload addClone(Slide, MasterSlide, boolean) เมื่อสไลด์ที่นำเข้าต้องใช้มาสเตอร์ที่มีอยู่แล้วในงานนำเสนอปลายทาง
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
$destinationMaster = $destination->getMasters()->get_Item(0);
foreach ($source->getSlides() as $slide) {
$destination->getSlides()->addClone($slide, $destinationMaster, true);
}
} finally {
$source->dispose();
}
$destination->save("merged-with-destination-master.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
Aspose.Slides จะเลือกเลเอาต์ที่เหมาะสมภายใต้มาสเตอร์ที่ระบุโดยการจับคู่ประเภทหรือชื่อของเลเอาต์ต้นทาง หากไม่มีเลเอาต์ที่เหมาะสมและ allowCloneMissingLayout มีค่า true เลเอาต์ต้นทางจะถูกโคลนเพื่อให้สไลด์สามารถเพิ่มได้ หากเป็น false จะมีการโยน PptxEditException
ใช้ false เมื่อคุณต้องการให้การผสานล้มเหลวแทนการเพิ่มเลเอาต์ใหม่ในมาสเตอร์ปลายทาง
ผสานสไลด์โดยใช้เลเอาต์ปลายทางเฉพาะ
ใช้ overload addClone(Slide, LayoutSlide) เมื่อคุณทราบเลเอาต์ปลายทางที่สไลด์ที่นำเข้าต้องใช้อย่างชัดเจน
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
$destinationLayout = $destination->getLayoutSlides()->get_Item(0);
foreach ($source->getSlides() as $slide) {
$destination->getSlides()->addClone($slide, $destinationLayout);
}
} finally {
$source->dispose();
}
$destination->save("merged-with-destination-layout.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
การใช้เลเอาต์ปลายทางจะเปลี่ยนความสัมพันธ์ของเลเอาต์ที่สืบมรดก; ไม่ได้ออกแบบใหม่เนื้อหาของสไลด์ต้นทาง หากเลเอาต์ของแหล่งและปลายทางมีโครงสร้าง placeholder แตกต่างกัน ให้ตรวจสอบผลลัพธ์เพื่อยืนยันว่าการจัดรูปแบบและพฤติกรรมของ placeholder เหมาะสม
ผสานการนำเสนอที่มีขนาดสไลด์ต่างกัน
การนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานกันได้ แต่การโคลนสไลด์เข้าไปในงานนำเสนอที่มีขนาดสไลด์อื่นจะไม่ออกแบบเนื้อหาใหม่ให้เข้ากับแคนวาสขนาดใหม่ รูปร่างอาจหลุดตำแหน่ง, ถูกยืด/ย่อโดยไม่คาดคิด, หรืออยู่นอกพื้นที่สไลด์ที่มองเห็นได้
วิธีที่เป็นประโยชน์คือปรับขนาดงานนำเสนอแหล่งก่อนโคลน วิธี SlideSize::setSize() สามารถย่อ/ขยายเนื้อหาที่มีอยู่พร้อมกับเปลี่ยนขนาดสไลด์ได้ SlideSizeScaleType::EnsureFit จะย่อเนื้อหาให้พอดีกับขนาดที่ระบุ
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideSizeScaleType;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
$sourceWidth = java_values($source->getSlideSize()->getSize()->getWidth());
$sourceHeight = java_values($source->getSlideSize()->getSize()->getHeight());
$destinationWidth = java_values($destination->getSlideSize()->getSize()->getWidth());
$destinationHeight = java_values($destination->getSlideSize()->getSize()->getHeight());
if ($sourceWidth != $destinationWidth || $sourceHeight != $destinationHeight) {
$source->getSlideSize()->setSize($destinationWidth, $destinationHeight, SlideSizeScaleType::EnsureFit);
}
foreach ($source->getSlides() as $slide) {
$destination->getSlides()->addClone($slide);
}
} finally {
$source->dispose();
}
$destination->save("merged-same-slide-size.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
การปรับขนาดจะเปลี่ยนวัตถุงานนำเสนอแหล่งในหน่วยความจำ หากคุณต้องการให้งานนำเสนอแหล่งต้นฉบับคงอยู่สำหรับการทำงานอื่น เปิดอินสแตนซ์แยกสำหรับการผสาน
ผสานสไลด์เข้าสู่ Section ของงานนำเสนอ
ลูปโคลนสไลด์พื้นฐานจะไม่สร้างโครงสร้าง Section ของงานนำเสนอแหล่งใหม่ หาก Section มีความสำคัญในผลลัพธ์ ให้สร้างหรือเลือก Section ในงานนำเสนอปลายทางและโคลนสไลด์เข้าไปในนั้นโดยใช้ addClone(Slide, Section)
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$destination = new Presentation("destination.pptx");
try {
$source = new Presentation("source.pptx");
try {
$importedSection = $destination->getSections()->appendEmptySection("Imported slides");
foreach ($source->getSlides() as $slide) {
$destination->getSlides()->addClone($slide, $importedSection);
}
} finally {
$source->dispose();
}
$destination->save("merged-with-section.pptx", SaveFormat::Pptx);
} finally {
$destination->dispose();
}
สไลด์ที่โคลนจะถูกเพิ่มต่อท้าย Section ปลายทางที่กำหนด เพื่อคงหลาย Section ของแหล่ง ให้เรียกใช้ Presentation::getSections เพื่อนับ Section ของแหล่ง, ดึงสไลด์ของแต่ละ Section ด้วย Section::getSlidesListOfSection, สร้าง Section ใหม่ในปลายทาง, แล้วโคลนสไลด์ที่ได้ไปยัง Section ที่สอดคล้องกัน ดูตัวอย่างการนับ Section ทั้งหมดใน Manage Slide Sections สำหรับกรณีที่รวม Section ว่างและการเปลี่ยนแปลงโครงสร้าง
ผสานหลายงานนำเสนออย่างปลอดภัย
ตัวอย่างแบบต้นสุดถึงปลายสุดต่อไปนี้ใช้งานนำเสนอแรกเป็นปลายทาง, ปรับขนาดสไลด์ของแต่ละแหล่งเพิ่มเติม, เปิดแต่ละแหล่งเฉพาะช่วงที่ทำการคัดลอก, และบันทึกไฟล์สุดท้ายเมื่อเสร็จ
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\SlideSizeScaleType;
$inputFiles = ["part1.pptx", "part2.pptx", "part3.pptx"];
$merged = new Presentation($inputFiles[0]);
try {
$mergedWidth = java_values($merged->getSlideSize()->getSize()->getWidth());
$mergedHeight = java_values($merged->getSlideSize()->getSize()->getHeight());
for ($fileIndex = 1; $fileIndex < count($inputFiles); $fileIndex++) {
$source = new Presentation($inputFiles[$fileIndex]);
try {
$sourceWidth = java_values($source->getSlideSize()->getSize()->getWidth());
$sourceHeight = java_values($source->getSlideSize()->getSize()->getHeight());
if ($sourceWidth != $mergedWidth || $sourceHeight != $mergedHeight) {
$source->getSlideSize()->setSize($mergedWidth, $mergedHeight, SlideSizeScaleType::EnsureFit);
}
foreach ($source->getSlides() as $slide) {
$merged->getSlides()->addClone($slide);
}
} finally {
$source->dispose();
}
}
$merged->save("merged.pptx", SaveFormat::Pptx);
} finally {
$merged->dispose();
}
นี่เป็นฐานที่ดีสำหรับคงรูปแบบต้นฉบับของสไลด์ที่นำเข้า หากผลลัพธ์ต้องใช้ธีมเดียวของปลายทาง ให้แทนที่การเรียก addClone($slide) ธรรมดาด้วย overload มาสเตอร์หรือเลเอาต์ปลายทางที่ได้อธิบายไว้ก่อนหน้า
ข้อควรพิจารณาเชิงปฏิบัติ
มาสเตอร์, เลเอาต์, และความแม่นยำของรูปแบบ
การโคลนสไลด์พื้นฐานอาจนำมาสเตอร์ของแหล่งเข้ามาในงานนำเสนอปลายทางโดยอัตโนมัติ Aspose.Slides เก็บทะเบียนสำหรับมาสเตอร์ที่โคลนอัตโนมัติเพื่อหลีกเลี่ยงการโคลนมาสเตอร์เดียวกันซ้ำหลายครั้ง มาสเตอร์ที่โคลนด้วยตนเองจะไม่ได้ถูกบันทึกในทะเบียนนั้น ดังนั้นหลีกเลี่ยงการโคลนมาสเตอร์ล่วงหน้าหากไม่ได้ต้องการควบคุมโครงสร้างมาสเตอร์อย่างชัดเจน
อย่า assume ว่ามาสเตอร์หรือเลเอาต์สองชุดที่มีชื่อเดียวกันจะเหมือนกันในเชิงภาพ หากเทมเพลตขององค์กรต้องควบคุมลักษณะสุดท้าย ให้เลือกมาสเตอร์หรือเลเอาต์ปลายทางอย่างเจาะจงและตรวจสอบผลลัพธ์หลังการผสาน
โน้ตและคอมเมนต์
โน้ตของผู้พูดและคอมเมนต์ของสไลด์ถูกเชื่อมกับเนื้อหาสไลด์และจะคัดลอกเมื่อสไลด์ถูกโคลน Aspose.Slides ยังมี API เฉพาะสำหรับ presentation notes และ presentation comments
หากการจัดรูปแบบของหน้าโน้ตสำคัญ ให้ตรวจสอบงานนำเสนอที่ผสานแล้ว เนื่องจากโน้ตมาสเตอร์เป็นวัตถุระดับงานนำเสนอและอาจแตกต่างกันระหว่างไฟล์แหล่ง สำหรับเวิร์กโฟลว์การตรวจสอบ ให้ตรวจสอบผู้เขียนคอมเมนต์และคอมเมนต์แบบเธรดหลังการรวมไฟล์จากผู้เขียนหรือเทมเพลตต่างกัน
รูปภาพ, เสียง, วิดีโอ, วัตถุ OLE, และลิงก์ภายนอก
สไลด์อาจอ้างอิงแหล่งทรัพยากรระดับงานนำเสนอ เช่น รูปภาพ, เสียงฝัง, วิดีโอฝัง, และข้อมูล OLE ให้โคลนสไลด์โดยตรงแทนการคัดลอกรูปแบบที่มองเห็นเท่านั้น เพื่อให้ Aspose.Slides สามารถคงความสัมพันธ์ของสไลด์ต่อทรัพยากรเหล่านั้น
ทรัพยากรที่ฝังและลิงก์ควรจัดการแตกต่างกัน ลิงก์เสียง, วิดีโอ, วัตถุ OLE หรือ hyperlink ยังคงขึ้นกับเป้าหมายภายนอก; การโคลนสไลด์ไม่ได้เปลี่ยนลิงก์ภายนอกให้เป็นเนื้อหาฝัง ตรวจสอบเส้นทางและ URL ของทรัพยากรที่ลิงก์ในสภาพแวดล้อมที่งานนำเสนอที่ผสานจะถูกเปิด
Aspose.Slides ติดตามมาสเตอร์ที่โคลนอัตโนมัติ แต่ไม่ได้รับประกันว่าทรัพยากรไบนารีที่ตรงกันจากงานนำเสนอแหล่งที่ไม่เกี่ยวข้องจะถูกลบซ้ำอย่างทั่วไป หากขนาดไฟล์ผลลัพธ์สำคัญ ให้ตรวจสอบแพ็กเกจที่ผสานและวัดขนาดผลลัพธ์ด้วยตนเอง แทนพึ่งพาการลบซ้ำโดยนัย
ฟอนต์ฝังและความพร้อมใช้งานของฟอนต์
ฟอนต์จัดการระดับงานนำเสนอ หากต้องการให้ตัวอักษรคงที่ในเครื่องหลายเครื่อง อย่า assume ว่าการโคลนสไลด์อย่างเดียวรับประกันว่าฟอนต์ที่ต้องการทั้งหมดจะพร้อมในสภาพแวดล้อมปลายทาง คุณสามารถตรวจสอบฟอนต์ที่ฝังด้วย FontsManager::getEmbeddedFonts() และจัดการการฝังอย่างชัดเจนตามที่อธิบายใน Embed Fonts in Presentations
นอกจากนี้ต้องตรวจสอบว่าคุณได้รับอนุญาตให้ฝังฟอนต์ที่ใช้ในไฟล์แหล่งหรือไม่ เนื้อหาใบอนุญาตฟอนต์อาจจำกัดการฝังได้
งานนำเสนอที่มีรหัสผ่าน
ไฟล์แหล่งที่มีรหัสผ่านต้องเปิดสำเร็จก่อนจึงจะโคลนสไลด์ได้ ให้ใส่รหัสผ่านผ่าน LoadOptions::setPassword()
require_once("Java.inc");
require_once("lib/aspose.slides.php");
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("YOUR_PASSWORD");
$source = new Presentation("protected.pptx", $loadOptions);
try {
// ทำงานกับงานนำเสนอที่ถอดรหัสแล้ว.
} finally {
$source->dispose();
}
การเปิดไฟล์ที่เข้ารหัสไม่ได้ทำให้การป้องกันเดียวกันถูกนำไปใช้กับงานนำเสนอปลายทางโดยอัตโนมัติ ต้องกำหนดการป้องกันผลลัพธ์แยกต่างหากเมื่อจำเป็น
งานนำเสนอขนาดใหญ่และการใช้หน่วยความจำ
งานนำเสนอขนาดใหญ่ที่มีรูปภาพความละเอียดสูง, เสียง, วิดีโอ หรือวัตถุไบนารีขนาดใหญ่สามารถใช้หน่วยความจำมาก LoadOptions::getBlobManagementOptions() ให้ตัวเลือกสำหรับการจัดการ BLOB และไฟล์ชั่วคราว ดูตัวอย่างไฟล์ขนาดใหญ่ใน PHP via Java ที่ Open Presentations
สำหรับไฟล์ขนาดใหญ่ ให้โหลดจากเส้นทางไฟล์เมื่อเป็นไปได้ ปิดการใช้งานงานนำเสนอแหล่งทันทีเมื่อผสานเสร็จ และหลีกเลี่ยงการบันทึกผลลัพธ์ชั่วคราวบ่อย ๆ เว้นแต่ว่าเวิร์กโฟลว์ต้องการจุดตรวจสอบ
ความปลอดภัยของเธรด
อย้าโหลด, แก้ไข, บันทึก, หรือโคลนอินสแตนซ์ของ Presentation ในหลายเธรด การดำเนินการเหล่านี้ไม่ได้รับการสนับสนุนสำหรับการใช้หลายเธรดใน PHP via Java หากต้องการงานผสานแบบขนาน ให้รันในกระบวนการแยกที่แต่ละกระบวนการใช้อินสแตนซ์งานนำเสนอของตนเองและปฏิบัติตาม Aspose.Slides multithreading guidance
FAQ
ฉันจะคงการออกแบบดั้งเดิมของงานนำเสนอแต่ละไฟล์อย่างไร?
ใช้ SlideCollection::addClone โดยไม่กำหนดมาสเตอร์หรือเลเอาต์ปลายทาง Aspose.Slides สามารถโคลนมาสเตอร์ของแหล่งโดยอัตโนมัติเมื่อสไลด์ที่นำเข้าต้องการ
ฉันจะทำให้สไลด์ที่นำเข้าใช้ธีมของปลายทางได้อย่างไร?
ใช้ overload ที่รับมาสเตอร์ปลายทาง ส่งมาสเตอร์จากงานนำเสนอปลายทาง ไม่ใช่จากแหล่ง Aspose.Slides จะพยายามแมปสไลด์แต่ละสไลด์ไปยังเลเอ็ตที่เหมาะสมภายใต้มาสเตอร์นั้น
เมื่อใดควรใช้เลเอาต์ปลายทางเฉพาะแทนมาสเตอร์ปลายทาง?
ใช้เลเอาต์เฉพาะเมื่อสไลด์ที่นำเข้าทุกสไลด์ต้องใช้เลเอาต์เดียวที่รู้จัก ใช้มาสเตอร์เมื่อให้ Aspose.Slides เลือกเลเออต่าง ๆ ของมาสเตอร์นั้นตามประเภทหรือชื่อของเลเอาต์ต้นทาง
งานนำเสนอที่มีขนาดสไลด์ต่างกันสามารถผสานได้หรือไม่?
ได้ แต่เนื้อหาสไลด์จะไม่ออกแบบใหม่ให้เข้ากับมิติปลายทาง ให้ปรับขนาดงานนำแหล่งก่อน เช่นใช้ SlideSize::setSize() และ SlideSizeScaleType::EnsureFit
ฉันสามารถผสานไฟล์ PPT, PPTX, และ ODP ให้เป็นไฟล์เดียวได้หรือไม่?
ได้ เปิดงานนำเสนอแหล่งแต่ละไฟล์ โคลนสไลด์ที่ต้องการเข้าสู่งานนำเสนอปลายทางแล้วบันทึกเป็นฟอร์แมตที่รองรับ อย่างไรก็ตามฟอร์แมตงานนำเสนอไม่ได้สนับสนุนคุณสมบัติเหมือนกันทั้งหมด ควรตรวจสอบเนื้อหาซับซ้อนหลังการผสานหลายฟอร์แมต ดู Supported File Formats
ส่วน (sections) ของแหล่งจะถูกคงโดยอัตโนมัติหรือไม่?
ไม่ หากใช้ลูปพื้นฐานที่โคลนเฉพาะสไลด์ ต้องสร้างส่วนที่ต้องการในปลายทางและใช้ overload ของ addClone ที่รับ Section เพื่อคงโครงสร้างส่วน
โน้ตและคอมเมนต์จะถูกคงไว้หรือไม่?
พวกมันจะถูกคัดลอกพร้อมกับสไลด์ที่โคลน สำหรับเวิร์กโฟลว์ที่พึ่งพาการจัดรูปแบบของโน้ตมาสเตอร์, ผู้เขียนคอมเมนต์, หรือการรีวิวแบบเธรด ควรตรวจสอบผลลัพธ์หลังการผสาน เนื่องจากสถานการณ์เหล่านี้เกี่ยวข้องกับโครงสร้างระดับงานนำเสนอเช่นเดียวกับระดับสไลด์
สิ่งที่เกิดขึ้นกับไฟล์เสียง, วิดีโอ, วัตถุ OLE, และไฮเปอร์ลิงก์?
เนื้อหาที่ฝังจะถูกนำมาพร้อมกับความสัมพันธ์ของทรัพยากรของสไลด์ที่โคลน ส่วนลิงก์ภายนอกจะคงเป็นลิงก์ภายนอก ดังนั้นไฟล์หรือ URL ปลายทางต้องยังคงพร้อมใช้งานหลังการผสาน
ฟอนต์ที่ฝังจากทุกแหล่งจะมีในงานนำเสนอที่ผสานแล้วหรือไม่?
ไม่ควรพึ่งพาการโคลนสไลด์อย่างเดียวสำหรับการจัดจำหน่ายฟอนต์ ตรวจสอบฟอนต์ที่ฝังในปลายทางและจัดการการฝังฟอนต์หรือการให้บริการฟอนต์ภายนอกอย่างชัดเจนเมื่อการจัดรูปแบบของข้อความสำคัญ
ฉันจะผสานไฟล์ที่มีรหัสผ่านได้อย่างไร?
เปิดไฟล์ด้วย LoadOptions::setPassword() ที่ถูกต้อง แล้วโคลนสไลด์ตามปกติ การป้องกันผลลัพธ์ต้องกำหนดแยกต่างหาก
ควรจัดการงานนำเสนอขนาดใหญ่อย่างไร?
ใช้การจัดการ BLOB เมื่อวัตถุไบนารีใช้หน่วยความจำมาก, โหลดจากเส้นทางไฟล์สำหรับไฟล์ขนาดใหญ่, ปิดงานนำเสนอแหล่งทันทีหลังการผสาน, และบันทึกผลลัพธ์ขั้นสุดท้ายเมื่อจำเป็นเท่านั้น
ฉันสามารถผสานสไลด์จากหลายเธรดได้หรือไม่?
การโหลด, บันทึก, หรือโคลนงานนำเสนอในหลายเธรดไม่รองรับใน PHP via Java หากต้องการทำงานขนาน ให้ใช้กระบวนการแยกที่แต่ละกระบวนการทำงานในเธรดเดียวและแยกอินสแตนซ์งานนำเสนออย่างชัดเจนตามแนวทางการทำงานหลายเธรดของ Aspose.Slides.