คัดลอกสไลด์การนำเสนอใน Java
บทนำ
การทำสำเนา (Cloning) คือกระบวนการสร้างสำเนาที่ตรงกันหรือเลียนแบบของบางอย่าง Aspose.Slides for Java ยังทำให้สามารถสร้างสำเนาหรือคลอนของสไลด์ใดก็ได้และจากนั้นแทรกสไลด์ที่คลอนไว้ไปยังการนำเสนอปัจจุบันหรือการนำเสนออื่นที่เปิดอยู่ กระบวนการคลอนสไลด์จะสร้างสไลด์ใหม่ที่นักพัฒนาสามารถแก้ไขได้โดยไม่ทำให้สไลด์ต้นฉบับเปลี่ยนแปลง มีหลายวิธีที่เป็นไปได้ในการคลอนสไลด์:
- คลอนที่ส่วนท้ายภายในการนำเสนอ
- คลอนที่ตำแหน่งอื่นภายในการนำเสนอ
- คลอนที่ส่วนท้ายในการนำเสนออื่น
- คลอนที่ตำแหน่งอื่นในการนำเสนออื่น
- คลอนที่ตำแหน่งเฉพาะในการนำเสนออื่น
ใน Aspose.Slides for Java (คอลเลกชันของอ็อบเจ็กต์ ISlide) ที่เปิดโดยอ็อบเจ็กต์ Presentation จะให้วิธีการ addClone และ insertClone เพื่อดำเนินการคลอนสไลด์ตามประเภทที่กล่าวข้างต้น
คลอนสไลด์ที่ส่วนท้ายของการนำเสนอ
หากคุณต้องการคลอนสไลด์แล้วใช้ในไฟล์การนำเสนอเดียวกันที่ส่วนท้ายของสไลด์ที่มีอยู่แล้ว ให้ใช้วิธีการ addClone ตามขั้นตอนด้านล่าง:
- สร้างอินสแตนซ์ของคลาส Presentation
- เรียกใช้คลาส ISlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดโดยอ็อบเจ็กต์ Presentation
- เรียกวิธีการ addClone ที่เปิดโดยอ็อบเจ็กต์ ISlideCollection และส่งสไลด์ที่ต้องการคลอนเป็นพารามิเตอร์ให้กับวิธีการ addClone
- เขียนไฟล์การนำเสนอที่แก้ไขแล้ว
ในตัวอย่างด้านล่าง เราได้คลอนสไลด์ (ซึ่งอยู่ที่ตำแหน่งแรก – ดัชนีศูนย์ – ของการนำเสนอ) ไปยังส่วนท้ายของการนำเสนอ
// สร้างอ็อบเจ็กต์ Presentation ที่เป็นตัวแทนของไฟล์การนำเสนอ
Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
// คลอนสไลด์ที่ต้องการไปยังส่วนท้ายของคอลเลกชันสไลด์ในการนำเสนอเดียวกัน
ISlideCollection slds = pres.getSlides();
slds.addClone(pres.getSlides().get_Item(0));
// บันทึกการนำเสนอที่แก้ไขแล้วลงดิสก์
pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
คลอนสไลด์ไปยังตำแหน่งอื่นภายในการนำเสนอ
หากคุณต้องการคลอนสไลด์แล้วใช้ในไฟล์การนำเสนอเดียวกันแต่ที่ตำแหน่งต่างออกไป ให้ใช้วิธีการ insertClone:
- สร้างอินสแตนซ์ของคลาส Presentation
- เรียกใช้คลาสโดยอ้างอิงคอลเลกชัน Slides ที่เปิดโดยอ็อบเจ็กต์ Presentation
- เรียกวิธีการ insertClone ที่เปิดโดยอ็อบเจ็กต์ ISlideCollection และส่งสไลด์ที่ต้องการคลอนพร้อมกับดัชนีตำแหน่งใหม่เป็นพารามิเตอร์ให้กับวิธีการ insertClone
- เขียนการนำเสนอที่แก้ไขเป็นไฟล์ PPTX
ในตัวอย่างด้านล่าง เราได้คลอนสไลด์ (ซึ่งอยู่ที่ดัชนีศูนย์ – ตำแหน่ง 1 – ของการนำเสนอ) ไปที่ดัชนี 1 – ตำแหน่ง 2 – ของการนำเสนอ
// สร้างอ็อบเจ็กต์ Presentation ที่เป็นตัวแทนของไฟล์การนำเสนอ
Presentation pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
// คลอนสไลด์ที่ต้องการไปยังส่วนท้ายของคอลเลกชันสไลด์ในการนำเสนอเดียวกัน
ISlideCollection slds = pres.getSlides();
// คลอนสไลด์ที่ต้องการไปยังดัชนีที่กำหนดในการนำเสนอเดียวกัน
slds.insertClone(2, pres.getSlides().get_Item(1));
// บันทึกการนำเสนอที่แก้ไขแล้วลงดิสก์
pres.save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
คลอนสไลด์ที่ส่วนท้ายของการนำเสนออื่น
หากคุณต้องการคลอนสไลด์จากการนำเสนอหนึ่งแล้วใช้ในไฟล์การนำเสนออีกไฟล์หนึ่งที่ส่วนท้ายของสไลด์ที่มีอยู่:
- สร้างอินสแตนซ์ของคลาส Presentation ที่มีการนำเสนอซึ่งสไลด์จะถูกคลอนจากนั้น
- สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นการนำเสนอปลายทางซึ่งสไลด์จะถูกเพิ่มเข้าไป
- เรียกใช้คลาส ISlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดโดยอ็อบเจ็กต์ Presentation ของการนำเสนอปลายทาง
- เรียกวิธีการ addClone ที่เปิดโดยอ็อบเจ็กต์ ISlideCollection และส่งสไลด์จากการนำเสนอแหล่งที่มเป็นพารามิเตอร์ให้กับวิธีการ addClone
- เขียนไฟล์การนำเสนอปลายทางที่แก้ไขแล้ว
ในตัวอย่างด้านล่าง เราได้คลอนสไลด์ (จากดัชนีแรกของการนำเสนอแหล่งที่มา) ไปยังส่วนท้ายของการนำเสนอปลายทาง
// สร้างอ็อบเจ็กต์ Presentation เพื่อโหลดไฟล์การนำเสนอแหล่งที่มา
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
// สร้างอ็อบเจ็กต์ Presentation สำหรับไฟล์ PPTX ปลายทาง (ซึ่งสไลด์จะถูกคลอน)
Presentation destPres = new Presentation();
try {
// คลอนสไลด์ที่ต้องการจากการนำเสนอแหล่งที่มาถึงส่วนท้ายของคอลเลกชันสไลด์ในการนำเสนอปลายทาง
ISlideCollection slds = destPres.getSlides();
slds.addClone(srcPres.getSlides().get_Item(0));
// บันทึกการนำเสนอปลายทางลงดิสก์
destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
คลอนสไลด์ไปยังตำแหน่งอื่นในการนำเสนออื่น
หากคุณต้องการคลอนสไลด์จากการนำเสนอหนึ่งและใช้ในการนำเสนออื่นที่ตำแหน่งเฉพาะ:
- สร้างอินสแตนซ์ของคลาส Presentation ที่มีการนำเสนอแหล่งที่มาซึ่งสไลด์จะถูกคลอนจากนั้น
- สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นการนำเสนอที่สไลด์จะถูกเพิ่มเข้าไป
- เรียกใช้คลาส ISlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดโดยอ็อบเจ็กต์ Presentation ของการนำเสนอปลายทาง
- เรียกวิธีการ insertClone ที่เปิดโดยอ็อบเจ็กต์ ISlideCollection และส่งสไลด์จากการนำเสนอแหล่งที่มาพร้อมตำแหน่งที่ต้องการเป็นพารามิเตอร์ให้กับวิธีการ insertClone
- เขียนไฟล์การนำเสนอปลายทางที่แก้ไขแล้ว
ในตัวอย่างด้านล่าง เราได้คลอนสไลด์ (จากดัชนีศูนย์ของการนำเสนอแหล่งที่มา) ไปยังดัชนี 1 (ตำแหน่ง 2) ของการนำเสนอปลายทาง
// สร้างอ็อบเจ็กต์ Presentation เพื่อโหลดไฟล์การนำเสนอแหล่งที่มา
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
// สร้างอ็อบเจ็กต์ Presentation สำหรับไฟล์ PPTX ปลายทาง (ซึ่งสไลด์จะถูกคลอน)
Presentation destPres = new Presentation();
try {
// คลอนสไลด์ที่ต้องการจากการนำเสนอแหล่งที่มาถึงส่วนท้ายของคอลเลกชันสไลด์ในการนำเสนอปลายทาง
ISlideCollection slds = destPres.getSlides();
slds.insertClone(2, srcPres.getSlides().get_Item(0));
// บันทึกการนำเสนอปลายทางลงดิสก์
destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
คลอนสไลด์ที่ตำแหน่งเฉพาะในการนำเสนออื่น
หากคุณต้องการคลอนสไลด์พร้อมมาสเตอร์สไลด์จากการนำเสนอหนึ่งและใช้ในการนำเสนออื่น คุณต้องคลอนมาสเตอร์สไลด์ที่ต้องการจากการนำเสนอแหล่งที่มายังการนำเสนอปลายทางก่อน แล้วจึงใช้มาสเตอร์สไลด์นั้นเพื่อคลอนสไลด์พร้อมมาสเตอร์สไลด์วิธีการ addClone(ISlide, IMasterSlide, boolean) คาดว่ามาสเตอร์สไลด์จะมาจากการนำเสนอปลายทาง ไม่ใช่จากแหล่งที่มา เพื่อตรวจสอบขั้นตอนต่อไป:
- สร้างอินสแตนซ์ของคลาส Presentation ที่มีการนำเสนอแหล่งที่มาซึ่งสไลด์จะถูกคลอนจากนั้น
- สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นการนำเสนอปลายทางซึ่งสไลด์จะถูกคลอนไปยังนั้น
- เข้าถึงสไลด์ที่ต้องการคลอนพร้อมกับมาสเตอร์สไลด์
- เรียกใช้คลาส IMasterSlideCollection โดยอ้างอิงคอลเลกชัน Masters ที่เปิดโดยอ็อบเจ็กต์ Presentation ของการนำเสนอปลายทาง
- เรียกวิธีการ addClone ที่เปิดโดยอ็อบเจ็กต์ [IMasterSlideCollection] และส่งมาสเตอร์จาก PPTX แหล่งที่มาที่จะคลอนเป็นพารามิเตอร์ให้กับวิธีการ [addClone]
- เรียกใช้คลาส ISlideCollection โดยตั้งค่าอ้างอิงไปยังคอลเลกชัน Slides ที่เปิดโดยอ็อบเจ็กต์ Presentation ของการนำเสนอปลายทาง
- เรียกวิธีการ addClone ที่เปิดโดยอ็อบเจ็กต์ [ISlideCollection] และส่งสไลด์จากการนำเสนอแหล่งที่มาไปคลอนพร้อมมาสเตอร์สไลด์เป็นพารามิเตอร์ให้กับวิธีการ [addClone]
- เขียนไฟล์การนำเสนอปลายทางที่แก้ไขแล้ว
ในตัวอย่างด้านล่าง เราได้คลอนสไลด์พร้อมมาสเตอร์ (ซึ่งอยู่ที่ดัชนีศูนย์ของการนำเสนอแหล่งที่มา) ไปยังส่วนท้ายของการนำเสนอปลายทางโดยใช้มาสเตอร์จากสไลด์แหล่งที่มา
// สร้างอ็อบเจ็กต์ Presentation เพื่อโหลดไฟล์การนำเสนอแหล่งที่มา
Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
// สร้างอ็อบเจ็กต์ Presentation สำหรับการนำเสนอปลายทาง (ซึ่งสไลด์จะถูกคลอน)
Presentation destPres = new Presentation();
try {
// สร้างอ็อบเจ็กต์ ISlide จากคอลเลกชันสไลด์ในการนำเสนอแหล่งที่มาพร้อมกับ
// มาสเตอร์สไลด์
ISlide SourceSlide = srcPres.getSlides().get_Item(0);
IMasterSlide SourceMaster = SourceSlide.getLayoutSlide().getMasterSlide();
// คัดลอกมาสเตอร์สไลด์ที่ต้องการจากการนำเสนอแหล่งที่มาสู่คอลเลกชันมาสเตอร์ใน
// การนำเสนอปลายทาง
IMasterSlideCollection masters = destPres.getMasters();
IMasterSlide DestMaster = SourceSlide.getLayoutSlide().getMasterSlide();
// คัดลอกมาสเตอร์สไลด์ที่ต้องการจากการนำเสนอแหล่งที่มาสู่คอลเลกชันมาสเตอร์ใน
// การนำเสนอปลายทาง
IMasterSlide iSlide = masters.addClone(SourceMaster);
// คัดลอกสไลด์ที่ต้องการจากการนำเสนอแหล่งที่มาพร้อมมาสเตอร์ที่ต้องการไปยังส่วนท้ายของ
// คอลเลกชันสไลด์ในการนำเสนอปลายทาง
ISlideCollection slds = destPres.getSlides();
slds.addClone(SourceSlide, iSlide, true);
// บันทึกการนำเสนอปลายทางลงดิสก์
destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
คลอนสไลด์ที่ส่วนท้ายของส่วนที่กำหนด
หากคุณต้องการคลอนสไลด์แล้วใช้ในไฟล์การนำเสนอเดียวกันแต่ที่ส่วนต่างกัน ให้ใช้วิธีการ addClone ที่เปิดโดยอินเทอร์เฟซ ISlideCollection Aspose.Slides for Java ทำให้สามารถคลอนสไลด์จากส่วนแรกแล้วแทรกสไลด์ที่คลอนไปยังส่วนที่สองของการนำเสนอเดียวกันได้
โค้ดตัวอย่างต่อไปนี้แสดงวิธีคลอนสไลด์และแทรกสไลด์ที่คลอนไปยังส่วนที่กำหนด
IPresentation presentation = new Presentation();
try {
presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 50, 300, 100);
presentation.getSections().addSection("Section 1", presentation.getSlides().get_Item(0));
ISection section2 = presentation.getSections().appendEmptySection("Section 2");
presentation.getSlides().addClone(presentation.getSlides().get_Item(0), section2);
// บันทึกการนำเสนอปลายทางลงดิสก์
presentation.save(dataDir + "CloneSlideIntoSpecifiedSection.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
คำถามที่พบบ่อย
บันทึกผู้พูดและความคิดเห็นของผู้ตรวจสอบจะถูกคลอนไหม?
ใช่ หน้าโน้ตและความคิดเห็นการตรวจสอบจะรวมอยู่ในคลอน หากคุณไม่ต้องการให้มีอยู่ ให้ลบออกหลังจากแทรก
กราฟและแหล่งข้อมูลของมันจะจัดการอย่างไร?
อ็อบเจ็กต์กราฟ, การจัดรูปแบบและข้อมูลที่ฝังอยู่จะถูกคัดลอก หากกราฟเชื่อมโยงกับแหล่งข้อมูลภายนอก (เช่นเวิร์กบุ๊กที่ฝัง OLE) การเชื่อมโยงนั้นจะคงอยู่เป็นอ็อบเจ็กต์ OLE หลังจากย้ายไฟล์ตรวจสอบความพร้อมใช้งานของข้อมูลและพฤติกรรมการรีเฟรช
ฉันสามารถควบคุมตำแหน่งการแทรกและส่วนของคลอนได้หรือไม่?
ได้ คุณสามารถแทรกคลอนที่ดัชนีสไลด์เฉพาะและวางลงในส่วนที่เลือก หากส่วนเป้าหมายไม่มีอยู่ ให้สร้างก่อนแล้วย้ายสไลด์เข้าไปในส่วนนั้น