استنساخ شرائح العرض التقديمي في Java
المقدمة
الاستنساخ هو عملية إنشاء نسخة مطابقة أو نسخة مكررة من شيء ما. يتيح Aspose.Slides for Java أيضًا إمكانية عمل نسخة أو استنساخ لأي شريحة ثم إدراج تلك الشريحة المستنسخة إلى العرض التقديمي الحالي أو أي عرض تقديمي مفتوح آخر. عملية استنساخ الشريحة تُنشئ شريحة جديدة يمكن للمطورين تعديلها دون تغيير الشريحة الأصلية. هناك عدة طرق ممكنة لاستنساخ شريحة:
- استنساخ في النهاية داخل عرض تقديمي.
- استنساخ في موضع آخر داخل عرض تقديمي.
- استنساخ في النهاية في عرض تقديمي آخر.
- استنساخ في موضع آخر في عرض تقديمي آخر.
- استنساخ مع الشريحة الرئيسية إلى عرض تقديمي آخر.
في Aspose.Slides for Java، (مجموعة من كائنات ISlide) التي يُعرّفها كائن Presentation توفر طريقتي addClone وinsertClone لتنفيذ الأنواع المذكورة أعلاه من استنساخ الشرائح.
استنساخ شريحة في نهاية عرض تقديمي
إذا أردت استنساخ شريحة ثم استخدامها داخل نفس ملف العرض التقديمي في نهاية الشرائح الموجودة، استخدم طريقة addClone وفقًا للخطوات المذكورة أدناه:
- إنشاء مثال من فئة Presentation.
- استدعاء فئة ISlideCollection بالإشارة إلى مجموعة الشرائح التي يُعرّفها كائن Presentation.
- استدعاء طريقة addClone التي يُعرّفها كائن ISlideCollection وتمرير الشريحة التي سيتم استنساخها كمعامل إلى طريقة addClone.
- كتابة ملف العرض التقديمي المعدل.
في المثال أدناه، قمنا باستنساخ شريحة (تقع في الموضع الأول – الفهرس صفر – من العرض التقديمي) إلى نهاية العرض التقديمي.
import com.aspose.slides.*;
// إنشاء كائن من فئة 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 – الموضع 2 – من العرض التقديمي) إلى الفهرس 2 – الموضع 3 – من العرض التقديمي.
import com.aspose.slides.*;
// إنشاء كائن من فئة 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 التي يُعرّفها كائن العرض التقديمي للعرض الوجهة.
- استدعاء طريقة addClone التي يُعرّفها كائن ISlideCollection وتمرير الشريحة من العرض المصدر كمعامل إلى طريقة addClone.
- كتابة ملف العرض التقديمي الوجهة المعدل.
في المثال أدناه، قمنا باستنساخ شريحة (من الفهرس الأول للعرض المصدر) إلى نهاية العرض الوجهة.
import com.aspose.slides.*;
// إنشاء كائن من فئة 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 بالإشارة إلى مجموعة الشرائح التي يُعرّفها كائن العرض التقديمي للعرض الوجهة.
- استدعاء طريقة insertClone التي يُعرّفها كائن ISlideCollection وتمرير الشريحة من العرض المصدر مع الموضع المطلوب كمعامل إلى طريقة insertClone.
- كتابة ملف العرض التقديمي الوجهة المعدل.
في المثال أدناه، قمنا باستنساخ شريحة (من الفهرس صفر للعرض المصدر) إلى الفهرس 1 (الموضع 2) للعرض الوجهة.
import com.aspose.slides.*;
// إنشاء كائن من فئة Presentation لتحميل ملف العرض التقديمي المصدر
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
// إنشاء كائن من فئة Presentation لملف PPTX الوجهة (حيث سيتم استنساخ الشريحة)
Presentation destPres = new Presentation();
try {
// استنساخ الشريحة المطلوبة من العرض التقديمي المصدر إلى الفهرس المحدد في العرض التقديمي الوجهة
ISlideCollection slds = destPres.getSlides();
slds.insertClone(1, 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 بتعيين الإشارة إلى مجموعة الشرائح التي يُعرّفها كائن Presentation للعرض الوجهة.
- استدعاء طريقة addClone التي يُعرّفها كائن [ISlideCollection] وتمرير الشريحة من العرض المصدر إلى أن تُستنسخ مع الشريحة الرئيسية كمعامل إلى طريقة addClone.
- كتابة ملف العرض التقديمي الوجهة المعدل.
في المثال أدناه، قمنا باستنساخ شريحة مع شريحة رئيسية (تقع في الفهرس صفر للعرض المصدر) إلى نهاية العرض الوجهة باستخدام شريحة رئيسية من الشريحة المصدر.
import com.aspose.slides.*;
// إنشاء كائن من فئة 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 = masters.addClone(SourceMaster);
// استنساخ الشريحة المطلوبة من العرض التقديمي المصدر مع الشريحة الرئيسية المطلوبة إلى نهاية
// مجموعة الشرائح في العرض التقديمي الوجهة
ISlideCollection slds = destPres.getSlides();
slds.addClone(SourceSlide, DestMaster, true);
// حفظ العرض التقديمي الوجهة إلى القرص
destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
استنساخ شريحة في نهاية قسم محدد
إذا أردت استنساخ شريحة ثم استخدامها داخل نفس ملف العرض التقديمي لكن في قسم مختلف، استخدم طريقة addClone التي يُعرّفها واجهة ISlideCollection. يتيح Aspose.Slides for Java إمكانية استنساخ شريحة من القسم الأول ثم إدراج تلك الشريحة المستنسخة إلى القسم الثاني من نفس العرض التقديمي.
المقتطف البرمجي التالي يوضح كيفية استنساخ شريحة وإدراج الشريحة المستنسخة إلى قسم محدد.
import com.aspose.slides.*;
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("CloneSlideIntoSpecifiedSection.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
تأكد من توافق حجم الشريحة
عند استنساخ الشرائح إلى عرض تقديمي آخر، تأكد من أن حجم الشريحة في العرض الوجهة يطابق حجم الشريحة في المصدر. إذا اختلف حجم الشرائح، لا يقوم Aspose.Slides بإعادة تحجيم الأشكال المستنسخة تلقائيًا—تُحفظ إحداثياتها وأبعادها الأصلية، مما قد يتسبب في ظهور المحتوى غير مرتب أو يمتد خارج حدود الشريحة.
يمكنك ضبط حجم شريحة العرض الوجهة ليتطابق مع المصدر قبل استنساخ الشريحة والرئيسية:
Dimension2D sourceSize = sourcePresentation.getSlideSize().getSize();
targetPresentation.getSlideSize().setSize(
sourceSize.getWidth(), sourceSize.getHeight(), SlideSizeScaleType.DoNotScale);
قم بذلك قبل استنساخ الشريحة والرئيسية.
الأسئلة المتكررة
هل يتم استنساخ ملاحظات المتحدث وتعليقات المراجعين؟
نعم. يتم تضمين صفحة الملاحظات وتعليقات المراجعة في النسخة المستنسخة. إذا لم ترغب فيها، أزلها بعد الإدراج.
كيف يتم التعامل مع المخططات ومصادر بياناتها؟
يتم نسخ كائن المخطط وتنسيقه والبيانات المدمجة. إذا كان المخطط مرتبطًا بمصدر خارجي (مثل ملف عمل مضمن OLE)، يُحافظ على هذا الارتباط كـكائن OLE. بعد النقل بين الملفات، تحقق من توفر البيانات وسلوك التحديث.
هل يمكنني التحكم في موضع الإدراج والأقسام للنسخة المستنسخة؟
نعم. يمكنك إدراج النسخة المستنسخة عند فهرس شريحة معين ووضعها في قسم مختار. إذا كان القسم المستهدف غير موجود، أنشئه أولاً ثم انقل الشريحة إليه.