โคลนสไลด์การนำเสนอใน .NET

บทนำ

การโคลนคือกระบวนการทำสำเนาที่ตรงกันหรือสำเนาเหมือนของบางอย่าง Aspose.Slides ยังอนุญาตให้คุณคัดลอก (โคลน) สไลด์ใด ๆ แล้วแทรกสไลด์ที่ถูกโคลนเข้าไปในงานนำเสนอปัจจุบันหรือในงานนำเสนอที่เปิดอยู่อื่น ๆ การโคลนสไลด์สร้างสไลด์ใหม่ที่นักพัฒนาสามารถแก้ไขได้โดยไม่กระทบต่อสไลด์ต้นฉบับ มีหลายวิธีในการโคลนสไลด์:

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

In Aspose.Slides for .NET คอลเลกชันสไลด์ (คอลเลกชันของวัตถุ ISlide ) ที่เปิดให้เข้าถึงโดยวัตถุ Presentation ให้เมธอด AddClone และ InsertClone เพื่อทำการโคลนสไลด์ตามที่อธิบายข้างต้น.

โคลนสไลด์ที่ส่วนท้ายของงานนำเสนอ

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

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

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

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
using (Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx"))
{

    // โคลนสไลด์ที่ต้องการไปยังส่วนท้ายของคอลเลกชันสไลด์ในงานนำเสนอเดียวกัน
    ISlideCollection slds = pres.Slides;

    slds.AddClone(pres.Slides[0]);

    // บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
    pres.Save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);

}

โคลนสไลด์ไปยังตำแหน่งอื่นภายในงานนำเสนอ

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

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

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

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
using (Presentation pres = new Presentation("CloneWithInSamePresentation.pptx"))
{

    // โคลนสไลด์ที่ต้องการไปยังส่วนท้ายของคอลเลกชันสไลด์ในงานนำเดียวกัน
    ISlideCollection slds = pres.Slides;

    // โคลนสไลด์ที่ต้องการไปยังดัชนีที่ระบุในงานนำเสนอเดียวกัน
    slds.InsertClone(2, pres.Slides[1]);

    // บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
    pres.Save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);

}

โคลนสไลด์ที่ส่วนท้ายของงานนำเสนออื่น

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

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

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับไฟล์ PPTX ปลายทาง (ที่สไลด์จะถูกโคลน)
    using (Presentation destPres = new Presentation())
    {
        // โคลนสไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาถึงส่วนท้ายของคอลเลกชันสไลด์ในงานนำเสนอปลายทาง
        ISlideCollection slds = destPres.Slides;

        slds.AddClone(srcPres.Slides[0]);

        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
    }
}

โคลนสไลด์ไปยังตำแหน่งอื่นในงานนำเสนออื่น

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

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

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับไฟล์ PPTX ปลายทาง (ที่สไลด์จะถูกโคลน)
    using (Presentation destPres = new Presentation())
    {
        ISlideCollection slds = destPres.Slides;

        slds.InsertClone(2, srcPres.Slides[0]);

        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
    }
}

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

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

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

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

// สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดไฟล์งานนำเสนอแหล่งที่มา

using (Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx"))
{
    // สร้างอินสแตนซ์ของคลาส Presentation สำหรับงานนำเสนอปลายทาง (ที่สไลด์จะถูกโคลน)
    using (Presentation destPres = new Presentation())
    {

        // สร้างอินสแตนซ์ของ ISlide จากคอลเลกชันสไลด์ในงานนำเสนอแหล่งที่มาพร้อมกับ
        // มาสเตอร์สไลด์
        ISlide SourceSlide = srcPres.Slides[0];
        IMasterSlide SourceMaster = SourceSlide.LayoutSlide.MasterSlide;

        // คัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาลงในคอลเลกชันมาสเตอร์ใน
        // งานนำเสนอปลายทาง
        IMasterSlideCollection masters = destPres.Masters;
        IMasterSlide DestMaster = SourceSlide.LayoutSlide.MasterSlide;

        // คัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาลงในคอลเลกชันมาสเตอร์ใน
        // งานนำเสนอปลายทาง
        IMasterSlide iSlide = masters.AddClone(SourceMaster);

        // คัดลอกสไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาพร้อมมาสเตอร์ที่ต้องการไปยังส่วนท้ายของ
        // คอลเลกชันสไลด์ในงานนำเสนอปลายทาง
        ISlideCollection slds = destPres.Slides;
        slds.AddClone(SourceSlide, iSlide, true);
      
        // คัดลอกมาสเตอร์สไลด์ที่ต้องการจากงานนำเสนอแหล่งที่มาลงในคอลเลกชันมาสเตอร์ใน // งานนำเสนอปลายทาง
        // บันทึกงานนำเสนอปลายทางลงดิสก์
        destPres.Save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);

    }
}

โคลนสไลด์ที่ส่วนท้ายของส่วนที่ระบุ

ด้วย Aspose.Slides for .NET คุณสามารถโคลนสไลด์จากส่วนหนึ่งของงานนำเสนอและแทรกสไลด์นั้นลงในส่วนอื่นในงานนำเสนอเดียวกัน ในกรณีนี้คุณต้องใช้เมธอด AddClone จากอินเทอร์เฟซ ISlideCollection

โค้ด C# นี้แสดงวิธีการโคลนสไลด์และแทรกสไลด์ที่โคลนลงในส่วนที่ระบุ:

using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
    slide.Shapes.AddAutoShape(ShapeType.Ellipse, 150, 150, 100, 100); // เพื่อโคลน
    
    ISlide slide2 = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
    ISection section = pres.Sections.AddSection("Section2", slide2);

    pres.Slides.AddClone(slide, section);
    
    pres.Save("pres.pptx", SaveFormat.Pptx);
}

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

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

ใช่ หน้าโน๊ตและความคิดเห็นการตรวจสอบจะถูกรวมอยู่ในคลอน หากคุณไม่ต้องการให้มันอยู่ ให้ลบออก หลังจากการแทรก.

กราฟและแหล่งข้อมูลของมันถูกจัดการอย่างไร?

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

ฉันสามารถควบคุมตำแหน่งการแทรกและส่วนของคลอนได้หรือไม่?

ใช่ คุณสามารถแทรกคลอนที่ดัชนีสไลด์ที่ระบุและใส่ลงในส่วน ที่เลือกได้ หากส่วนเป้าหมายไม่มีอยู่ ให้สร้างส่วนนั้นก่อนแล้วจึงย้ายสไลด์ไปยังส่วนนั้น.