รวมพรีเซนเทชั่นอย่างมีประสิทธิภาพใน C++
Overview
Aspose.Slides ช่วยให้คุณรวมพรีเซนเทชั่นโดยการคัดลอกสไลด์จากพรีเซนเทชั่นหนึ่งไปยังอีกพรีเซนเทชั่นหนึ่ง บทความนี้อธิบายวิธีการรวมพรีเซนเทชั่นทั้งหมดหรือสไลด์ที่เลือกใช้มาสเตอร์สไลด์หรือเค้าโครงเฉพาะในระหว่างการรวม วิธีจัดการพรีเซนเทชั่นที่มีขนาดสไลด์ต่างกัน และการเพิ่มสไลด์ที่รวมแล้วเข้าไปในส่วนของพรีเซนเทชั่น นอกจากนี้ยังครอบคลุมโน๊ตผู้พูด คอมเมนต์ ไฟล์ต้นทางที่ป้องกันด้วยรหัสผ่าน และการใช้งานเธรด
Presentation Merging
เมื่อคุณรวมพรีเซนเทชั่นหนึ่งกับอีกพรีเซนเทชั่นหนึ่ง คุณกำลังรวมสไลด์ของพวกมันให้เป็นพรีเซนเทชั่นเดียวเพื่อให้ได้ไฟล์เดียว
Info
โปรแกรมพรีเซนเทชั่นส่วนใหญ่ (PowerPoint หรือ OpenOffice) ขาดฟังก์ชันที่ให้ผู้ใช้รวมพรีเซนเทชั่นในลักษณะนี้ได้
Aspose.Slides for C++, อย่างไรก็ตาม ช่วยให้คุณรวมพรีเซนเทชั่นได้หลายวิธี คุณสามารถรวมพรีเซนเทชั่นพร้อมกับรูปทรง สไตล์ ข้อความ การฟอร์แมต คอมเมนต์ แอนิเมชัน ฯลฯ โดยไม่ต้องกังวลเรื่องการสูญเสียคุณภาพหรือข้อมูล
See also
What Can Be Merged
ด้วย Aspose.Slides คุณสามารถรวม
- พรีเซนเทชั่นทั้งหมด ทั้งสไลด์จากพรีเซนเทชั่นทั้งหมดจะอยู่ในพรีเซนเทชั่นเดียว
- สไลด์ที่เลือก สไลด์ที่เลือกจะอยู่ในพรีเซนเทชั่นเดียว
- พรีเซนเทชั่นในรูปแบบเดียวกัน (PPT ไป PPT, PPTX ไป PPTX ฯลฯ) หรือรูปแบบต่างกัน (PPT ไป PPTX, PPTX ไป ODP ฯลฯ) ให้กันและกัน
Note
นอกจากพรีเซนเทชั่นแล้ว Aspose.Slides ยังอนุญาตให้คุณรวมไฟล์อื่นได้:
- Images, เช่น JPG to JPG หรือ PNG to PNG
- เอกสาร เช่น PDF to PDF หรือ HTML to HTML
- และไฟล์ประเภทต่างกัน เช่น image to PDF หรือ JPG to PDF หรือ TIFF to PDF
Merging Options
คุณสามารถกำหนดตัวเลือกที่ตัดสินว่า
- แต่ละสไลด์ในพรีเซนเทชั่นผลลัพธ์จะคงสไตล์เฉพาะของมัน
- หรือสไตล์เดียวกันจะใช้กับสไลด์ทั้งหมดในพรีเซนเทชั่นผลลัพธ์
เพื่อรวมพรีเซนเทชั่น Aspose.Slides ให้เมธอด AddClone (จากอินเทอร์เฟซ ISlideCollection) มีการทำงานหลายแบบที่กำหนดพารามิเตอร์ของกระบวนการรวมพรีเซนเทชั่น ทุกอ็อบเจกต์ Presentation มีคอลเลกชัน Slides ดังนั้นคุณสามารถเรียกเมธอด AddClone จากพรีเซนเทชั่นที่ต้องการรวมสไลด์เข้าไปได้
เมธอด AddClone จะคืนค่าเป็นอ็อบเจกต์ ISlide ซึ่งเป็นสำเนาของสไลด์ต้นทาง สไลด์ในพรีเซนเทชั่นผลลัพธ์จึงเป็นสำเนาของสไลด์จากต้นทาง ดังนั้นคุณสามารถเปลี่ยนแปลงสไลด์ที่ได้ (เช่น ใช้สไตล์หรือตัวเลือกการฟอร์แมตหรือเค้าโครง) โดยไม่ต้องกังวลว่าจะทำให้พรีเซนเทชั่นต้นทางได้รับผลกระทบ
Merge Presentations
Aspose.Slides มีเมธอด AddClone (ISlide) ที่ให้คุณรวมสไลด์โดยสไลด์ยังคงรักษาเค้าโครงและสไตล์เดิม (พารามิเตอร์เริ่มต้น)
โค้ด C++ ด้านล่างแสดงวิธีการรวมพรีเซนเทชั่น:
auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
pres1->get_Slides()->AddClone(slide);
}
pres1->Save(u"combined.pptx", SaveFormat::Pptx);
Merge Presentations with a Slide Master
Aspose.Slides มีเมธอด AddClone (ISlide, IMasterSlide, bool) ที่ให้คุณรวมสไลด์พร้อมใช้แม่แบบสไลด์มาสเตอร์ของพรีเซนเทชั่น หากต้องการคุณสามารถเปลี่ยนสไตล์ของสไลด์ในพรีเซนเทชั่นผลลัพธ์ได้
โค้ด C++ ต่อไปนี้สาธิตการทำงานดังกล่าว:
auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
pres1->get_Slides()->AddClone(slide, pres2->get_Masters()->idx_get(0), true);
}
pres1->Save(u"combined.pptx", SaveFormat::Pptx);
Note
เค้าโครงสไลด์สำหรับมาสเตอร์สไลด์จะถูกกำหนดโดยอัตโนมัติ หากไม่สามารถกำหนดเค้าโครงที่เหมาะสมได้ และพารามิเตอร์allowCloneMissingLayout ของเมธอด AddClone ถูกตั้งค่าเป็น true จะใช้เค้าโครงของสไลด์ต้นทาง มิฉะนั้นจะเกิดข้อผิดพลาด PptxEditException
หากคุณต้องการให้สไลด์ในพรีเซนเทชั่นผลลัพธ์ใช้เค้าโครงสไลด์ที่แตกต่างกัน ให้ใช้เมธอด AddClone (ISlide, ILayoutSlide) แทนเมื่อทำการรวม
Merge Specific Slides from Presentations
การรวมสไลด์เฉพาะจากหลายพรีเซนเทชั่นมีประโยชน์สำหรับการสร้างชุดสไลด์ที่กำหนดเอง Aspose.Slides C++ อนุญาตให้คุณเลือกและนำเข้าเฉพาะสไลด์ที่ต้องการ API จะคงรูปแบบ เค้าโครง และการออกแบบของสไลด์ต้นฉบับ
โค้ด C++ ด้านล่างสร้างพรีเซนเทชั่นใหม่ เพิ่มสไลด์หัวเรื่องจากพรีเซนเทชั่นอื่นสองไฟล์แล้วบันทึกผลลัพธ์ลงไฟล์:
SmartPtr<ISlide> GetTitleSlide(SmartPtr<IPresentation> presentation)
{
for (auto&& slide : presentation->get_Slides())
{
if (slide->get_LayoutSlide()->get_LayoutType() == SlideLayoutType::Title)
{
return slide;
}
}
return nullptr;
}
auto presentation = MakeObject<Presentation>();
auto presentation1 = MakeObject<Presentation>(u"presentation1.pptx");
auto presentation2 = MakeObject<Presentation>(u"presentation2.pptx");
presentation->get_Slides()->RemoveAt(0);
auto slide1 = GetTitleSlide(presentation1);
if (slide1 != nullptr)
presentation->get_Slides()->AddClone(slide1);
auto slide2 = GetTitleSlide(presentation2);
if (slide2 != nullptr)
presentation->get_Slides()->AddClone(slide2);
presentation->Save(u"combined.pptx", SaveFormat::Pptx);
presentation2->Dispose();
presentation1->Dispose();
presentation->Dispose();
Merge Presentations with a Slide Layout
โค้ด C++ นี้แสดงวิธีการรวมสไลด์จากพรีเซนเทชั่นพร้อมประยุกต์ใช้เค้าโครงสไลด์ที่คุณต้องการเพื่อให้ได้พรีเซนเทชั่นผลลัพธ์เดียว:
auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (const auto& slide : pres2->get_Slides())
{
pres1->get_Slides()->AddClone(slide, pres2->get_LayoutSlides()->idx_get(0));
}
pres1->Save(u"combined.pptx", SaveFormat::Pptx);
Merge Presentations with Different Slide Sizes
Note
คุณไม่สามารถรวมพรีเซนเทชั่นที่มีขนาดสไลด์ต่างกันได้เพื่อรวมพรีเซนเทชั่น 2 ตัวที่มีขนาดสไลด์แตกต่างกัน คุณต้องปรับขนาดของพรีเซนเทชั่นหนึ่งให้ตรงกับอีกพรีเซนเทชั่นหนึ่ง
โค้ดตัวอย่างต่อไปนี้สาธิตวิธีการดังกล่าว:
auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres1Size = pres1->get_SlideSize()->get_Size();
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
pres2->get_SlideSize()->SetSize(pres1Size.get_Width(), pres1Size.get_Height(), SlideSizeScaleType::EnsureFit);
for (const auto& slide : pres2->get_Slides())
{
pres1->get_Slides()->AddClone(slide);
}
pres1->Save(u"combined.pptx", SaveFormat::Pptx);
Merge Slides to a Presentation Section
โค้ด C++ นี้แสดงวิธีการรวมสไลด์เฉพาะเข้ากับส่วนหนึ่งของพรีเซนเทชั่น:
auto pres1 = System::MakeObject<Presentation>(u"pres1.pptx");
auto pres2 = System::MakeObject<Presentation>(u"pres2.pptx");
for (int32_t index = 0; index < pres2->get_Slides()->get_Count(); index++)
{
auto slide = pres2->get_Slides()->idx_get(index);
pres1->get_Slides()->AddClone(slide, pres1->get_Sections()->idx_get(0));
}
pres1->Save(u"combined.pptx", SaveFormat::Pptx);
สไลด์จะถูกเพิ่มที่ส่วนท้ายของเซคชั่นนั้น
Tip
Aspose มีแอปเว็บ FREE Collage (https://products.aspose.app/slides/th/collage) ให้คุณรวมภาพ JPG to JPG หรือ PNG to PNG, สร้าง photo grids ฯลฯFAQ
Are speaker notes preserved during merge?
ใช่ เมื่อตัวคัดลอกสไลด์ Aspose.Slides จะคัดลอกองค์ประกอบสไลด์ทั้งหมดรวมถึงโน้ตผู้พูด ฟอร์แมต และแอนิเมชัน
Are comments and their authors transferred?
คอมเมนต์เป็นส่วนของเนื้อหาสไลด์และจะถูกคัดลอกพร้อมสไลด์ ป้ายชื่อผู้เขียนคอมเมนต์จะถูกเก็บเป็นอ็อบเจกต์คอมเมนต์ในพรีเซนเทชั่นผลลัพธ์
What if the source presentation is password-protected?
ต้อง เปิดด้วยรหัสผ่าน (/slides/th/cpp/password-protected-presentation/) ผ่านเมธอด LoadOptions::set_Password หลังจากโหลดแล้วสไลด์เหล่านั้นสามารถคัดลอกไปยังไฟล์เป้าหมายที่ไม่ได้ป้องกัน (หรือไฟล์ที่ป้องกันก็ได้)
How thread-safe is the merge operation?
ห้ามใช้อ็อบเจกต์ Presentation ตัวเดียวกันจากหลายเธรด (/slides/th/cpp/multithreading/) กฎแนะนำคือ “หนึ่งเอกสาร — หนึ่งเธรด” ไฟล์ต่าง ๆ สามารถประมวลผลพร้อมกันในเธรดแยกต่างหากได้.