คัดลอกสไลด์การนำเสนอใน JavaScript

บทนำ

การคัดลอกคือกระบวนการสร้างสำเนาที่เหมือนกันหรือทำซ้ำของบางอย่าง Aspose.Slides for Node.js via Java ยังทำให้สามารถสร้างสำเนาหรือคัดลอกสไลด์ใด ๆ แล้วแทรกสไลด์ที่คัดลอกไว้ไปยังงานนำเสนอปัจจุบันหรือไฟล์งานนำเสนออื่นที่เปิดอยู่ได้ กระบวนการคัดลอกสไลด์จะสร้างสไลด์ใหม่ที่นักพัฒนาสามารถแก้ไขได้โดยไม่กระทบสไลด์เดิม มีวิธีคัดลอกสไลด์หลายวิธีดังต่อไปนี้:

  • คัดลอกที่ตำแหน่งท้ายภายในงานนำเสนอเดียวกัน
  • คัดลอกที่ตำแหน่งอื่นภายในงานนำเสนอ
  • คัดลอกที่ตำแหน่งท้ายในงานนำเสนออื่น
  • คัดลอกที่ตำแหน่งอื่นในงานนำเสนออื่น
  • คัดลอกที่ตำแหน่งเฉพาะในงานนำเสนออื่น

ใน Aspose.Slides for Node.js via Java (คอลเลกชันของอ็อบเจ็กต์ Slide ) ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation จะให้เมธอด addClone และ insertClone เพื่อดำเนินการคัดลอกสไลด์ตามประเภทที่กล่าวข้างต้น

คัดลอกที่ตำแหน่งท้ายภายในงานนำเสนอเดียวกัน

หากต้องการคัดลอกสไลด์แล้วใช้ในไฟล์งานนำเสนอเดียวกันที่ตำแหน่งสุดท้ายของสไลด์ที่มีอยู่ ให้ใช้เมธอด addClone ตามขั้นตอนต่อไปนี้:

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. สร้างตัวอย่างของคลาส SlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation
  3. เรียกเมธอด addClone ที่เปิดเผยโดยอ็อบเจ็กต์ SlideCollection และส่งสไลด์ที่ต้องการคัดลอกเป็นพารามิเตอร์ให้เมธอด addClone
  4. เขียนไฟล์งานนำเสนอที่แก้ไขแล้ว

ในตัวอย่างด้านล่าง เราได้คัดลอกสไลด์ (อยู่ที่ตำแหน่งแรก – ดัชนีศูนย์ – ของงานนำเสนอ) ไปยังตำแหน่งสุดท้ายของงานนำเสนอ

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
var pres = new aspose.slides.Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
    // คัดลอกสไลด์ที่ต้องการไปยังตำแหน่งท้ายของคอลเลกชันสไลด์ในงานนำเสนอเดียวกัน
    var slds = pres.getSlides();
    slds.addClone(pres.getSlides().get_Item(0));
    // บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
    pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    pres.dispose();
}

คัดลอกที่ตำแหน่งอื่นภายในงานนำเสนอ

หากต้องการคัดลอกสไลด์แล้วใช้ในไฟล์งานนำเสนอเดียวกันแต่ที่ตำแหน่งอื่น ให้ใช้เมธอด insertClone :

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. สร้างตัวอย่างของคลาสโดยอ้างอิงคอลเลกชัน Slides ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation
  3. เรียกเมธอด insertClone ที่เปิดเผยโดยอ็อบเจ็กต์ SlideCollection และส่งสไลด์ที่ต้องการคัดลอกพร้อมกับดัชนีของตำแหน่งใหม่เป็นพารามิเตอร์ให้เมธอด insertClone
  4. เขียนงานนำเสนอที่แก้ไขเป็นไฟล์ PPTX

ในตัวอย่างด้านล่าง เราได้คัดลอกสไลด์ (อยู่ที่ดัชนีศูนย์ – ตำแหน่ง 1 – ของงานนำเสนอ) ไปยังดัชนี 1 – ตำแหน่ง 2 – ของงานนำเสนอ

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
var pres = new aspose.slides.Presentation("CloneWithInSamePresentation.pptx");
try {
    // คัดลอกสไลด์ที่ต้องการไปยังตำแหน่งท้ายของคอลเลกชันสไลด์ในงานนำเสนอเดียวกัน
    var slds = pres.getSlides();
    // คัดลอกสไลด์ที่ต้องการไปยังตำแหน่งที่ระบุในงานนำเสนอเดียวกัน
    slds.insertClone(2, pres.getSlides().get_Item(1));
    // บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
    pres.save("Aspose_CloneWithInSamePresentation_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    pres.dispose();
}

คัดลอกที่ตำแหน่งท้ายในงานนำเสนออื่น

หากต้องการคัดลอกจากสไลด์หนึ่งในงานนำเสนอแล้วใช้ในไฟล์งานนำเสนออื่นที่ตำแหน่งสุดท้ายของสไลด์ที่มีอยู่:

  1. สร้างอินสแตนซ์ของคลาส Presentation ที่ประกอบด้วยงานนำเสนอที่สไลด์จะถูกคัดลอกจากนั้น
  2. สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นงานนำหมายที่สไลด์จะถูกเพิ่มเข้าไป
  3. สร้างตัวอย่างของคลาส SlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation ของงานนำหมายปลายทาง
  4. เรียกเมธอด addClone ที่เปิดเผยโดยอ็อบเจ็กต์ SlideCollection และส่งสไลด์จากงานนำเสนอแหล่งที่มเป็นพารามิเตอร์ให้เมธอด addClone
  5. เขียนไฟล์งานนำเสนอปลายทางที่แก้ไขแล้ว

ในตัวอย่างด้านล่าง เราได้คัดลอกสไลด์ (จากดัชนีแรกของงานนำเสนอแหล่งที่มา) ไปยังตำแหน่งสุดท้ายของงานนำเสนอปลายทาง

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา
var srcPres = new aspose.slides.Presentation("CloneAtEndOfAnother.pptx");
try {
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับ PPTX ปลายทาง (ซึ่งสไลด์จะถูกคัดลอกไปยัง)
    var destPres = new aspose.slides.Presentation();
    try {
        // คัดลอกสไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาถึงตำแหน่งท้ายของคอลเลกชันสไลด์ในงานนำเสนอปลายทาง
        var slds = destPres.getSlides();
        slds.addClone(srcPres.getSlides().get_Item(0));
        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.save("Aspose2_out.pptx", aspose.slides.SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

คัดลอกที่ตำแหน่งอื่นในงานนำเสนออื่น

หากต้องการคัดลอกจากสไลด์หนึ่งในงานนำเสนอแล้วใช้ในไฟล์งานนำเสนออื่นที่ตำแหน่งเฉพาะ:

  1. สร้างอินสแตนซ์ของคลาส Presentation ที่ประกอบด้วยงานนำเสนอแหล่งที่สไลด์จะถูกคัดลอกจากนั้น
  2. สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นงานนำเสนอที่สไลด์จะถูกเพิ่มเข้าไป
  3. สร้างตัวอย่างของคลาส SlideCollection โดยอ้างอิงคอลเลกชัน Slides ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation ของงานนำเสนอปลายทาง
  4. เรียกเมธอด insertClone ที่เปิดเผยโดยอ็อบเจ็กต์ SlideCollection และส่งสไลด์จากงานนำเสนอแหล่งที่มาพร้อมตำแหน่งที่ต้องการเป็นพารามิเตอร์ให้เมธอด insertClone
  5. เขียนไฟล์งานนำเสนอปลายทางที่แก้ไขแล้ว

ในตัวอย่างด้านล่าง เราได้คัดลอกสไลด์ (จากดัชนีศูนย์ของงานนำเสนอแหล่งที่มา) ไปยังดัชนี 1 (ตำแหน่ง 2) ของงานนำเสนอปลายทาง

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา
var srcPres = new aspose.slides.Presentation("CloneAtEndOfAnother.pptx");
try {
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับ PPTX ปลายทาง (ซึ่งสไลด์จะถูกคัดลอกไปยัง)
    var destPres = new aspose.slides.Presentation();
    try {
        // คัดลอกสไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาถึงตำแหน่งท้ายของคอลเลกชันสไลด์ในงานนำเสนอปลายทาง
        var slds = destPres.getSlides();
        slds.insertClone(2, srcPres.getSlides().get_Item(0));
        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.save("Aspose2_out.pptx", aspose.slides.SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

คัดลอกที่ตำแหน่งเฉพาะในงานนำเสนออื่น

หากต้องการคัดลอกสไลด์พร้อมมาสเตอร์สไลด์จากงานนำเสนอหนึ่งแล้วใช้ในงานนำเสนออื่น จำเป็นต้องคัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มายังงานนำเสนอปลายทางก่อน แล้วจึงใช้มาสเตอร์สไลด์นั้นคัดลอกสไลด์พร้อมมาสเตอร์สไลด์เมธอด addClone(ISlide, IMasterSlide, boolean) คาดหวังมาสเตอร์สไลด์จากงานนำเสนอปลายทาง ไม่ใช่จากงานนำเสนอแหล่งที่มา เพื่อคัดลอกสไลด์พร้อมมาสเตอร์สไลด์ ให้ทำตามขั้นตอนต่อไปนี้:

  1. สร้างอินสแตนซ์ของคลาส Presentation ที่ประกอบด้วยงานนำเสนอแหล่งที่สไลด์จะถูกคัดลอกจากนั้น
  2. สร้างอินสแตนซ์ของคลาส Presentation ที่ประกอบด้วยงานนำเสนอปลายทางที่สไลด์จะถูกคัดลอกไป
  3. เข้าถึงสไลด์ที่ต้องการคัดลอกพร้อมมาสเตอร์สไลด์
  4. สร้างตัวอย่างของคลาส MasterSlideCollection โดยอ้างอิงคอลเลกชัน Masters ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation ของงานนำเสนอปลายทาง
  5. เรียกเมธอด addClone ที่เปิดเผยโดยอ็อบเจ็กต์ MasterSlideCollection และส่งมาสเตอร์จากไฟล์ PPTX แหล่งที่มาที่ต้องการคัดลอกเป็นพารามิเตอร์ให้เมธอด addClone
  6. สร้างตัวอย่างของคลาส SlideCollection โดยตั้งค่าอ้างอิงไปยังคอลเลกชัน Slides ที่เปิดเผยโดยอ็อบเจ็กต์ Presentation ของงานนำเสนอปลายทาง
  7. เรียกเมธอด addClone ที่เปิดเผยโดยอ็อบเจ็กต์ SlideCollection และส่งสไลด์จากงานนำเสนอแหล่งที่มาที่ต้องการคัดลอกพร้อมมาสเตอร์สไลด์เป็นพารามิเตอร์ให้เมธอด addClone
  8. เขียนไฟล์งานนำเสนอปลายทางที่แก้ไขแล้ว

ในตัวอย่างด้านล่าง เราได้คัดลอกสไลด์พร้อมมาสเตอร์ (อยู่ที่ดัชนีศูนย์ของงานนำเสนอแหล่งที่มา) ไปยังตำแหน่งสุดท้ายของงานนำเสนอปลายทางโดยใช้มาสเตอร์จากสไลด์แหล่งที่มา

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา
var srcPres = new aspose.slides.Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับงานนำเสนอปลายทาง (ซึ่งสไลด์จะถูกคัดลอกไปยัง)
    var destPres = new aspose.slides.Presentation();
    try {
        // สร้าง ISlide จากคอลเลกชันสไลด์ในงานนำเสนอแหล่งที่มาพร้อมกับ
        // มาสเตอร์สไลด์
        var SourceSlide = srcPres.getSlides().get_Item(0);
        var SourceMaster = SourceSlide.getLayoutSlide().getMasterSlide();
        // คัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาถึงคอลเลกชันมาสเตอร์ใน
        // งานนำเสนอปลายทาง
        var masters = destPres.getMasters();
        var DestMaster = SourceSlide.getLayoutSlide().getMasterSlide();
        // คัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาถึงคอลเลกชันมาสเตอร์ใน
        // งานนำเสนอปลายทาง
        var iSlide = masters.addClone(SourceMaster);
        // คัดลอกสไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาพร้อมมาสเตอร์ที่ต้องการไปยังตำแหน่งสุดท้ายของ
        // คอลเลกชันสไลด์ในงานนำเสนอปลายทาง
        var slds = destPres.getSlides();
        slds.addClone(SourceSlide, iSlide, true);
        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", aspose.slides.SaveFormat.Pptx);
    } finally {
        destPres.dispose();
    }
} finally {
    srcPres.dispose();
}

คัดลอกที่ตำแหน่งท้ายในส่วนที่ระบุ

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

โค้ดตัวอย่างต่อไปนี้แสดงวิธีคัดลอกสไลด์และแทรกสไลด์ที่คัดลอกเข้าไปในส่วนที่ระบุ

var presentation = new aspose.slides.Presentation();
try {
    presentation.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 200, 50, 300, 100);
    presentation.getSections().addSection("Section 1", presentation.getSlides().get_Item(0));
    var section2 = presentation.getSections().appendEmptySection("Section 2");
    presentation.getSlides().addClone(presentation.getSlides().get_Item(0), section2);
    // บันทึกงานนำเสนอปลายทางลงดิสก์
    presentation.save(dataDir + "CloneSlideIntoSpecifiedSection.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

คำถามที่พบบ่อย

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

แผนภูมิและแหล่งข้อมูลของมันถูกจัดการอย่างไร?
อ็อบเจ็กต์แผนภูมิ การฟอร์แมต และข้อมูลที่ฝังอยู่จะถูกคัดลอก หากแผนภูมิกำหนดให้เชื่อมโยงกับแหล่งภายนอก (เช่น เวิร์กบุ๊กที่ฝัง OLE) การเชื่อมโยงนั้นจะคงอยู่เป็น OLE object หลังจากย้ายไฟล์ตรวจสอบความพร้อมใช้งานของข้อมูลและพฤติกรรมการรีเฟรช

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