فتح عرض تقديمي في JavaScript
نظرة عامة
بالإضافة إلى إنشاء عروض PowerPoint من الصفر، يتيح Aspose.Slides أيضًا فتح العروض الحالية. بعد تحميل عرض تقديمي، يمكنك استرجاع معلومات عنه، تعديل محتوى الشرائح، إضافة شرائح جديدة، حذف الشرائح الموجودة، وغير ذلك.
فتح العروض
لفتح عرض تقديمي موجود، قم بإنشاء كائن من الفئة Presentation ومرّر مسار الملف إلى مُنشئها.
النموذج التالي بلغة JavaScript يوضح كيفية فتح عرض تقديمي والحصول على عدد الشرائح:
// إنشاء كائن من فئة Presentation وتمرير مسار ملف إلى مُنشئها.
let presentation = new aspose.slides.Presentation("Sample.pptx");
try {
// طباعه إجمالي عدد الشرائح في العرض التقديمي.
console.log(presentation.getSlides().size());
} finally {
presentation.dispose();
}
فتح العروض المحمية بكلمة مرور
عند الحاجة لفتح عرض محمي بكلمة مرور، مرّر كلمة المرور عبر طريقة setPassword من فئة LoadOptions لفك التشفير وتحميله. يوضح الكود التالي ذلك:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setPassword("YOUR_PASSWORD");
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
try {
// تنفيذ عمليات على العرض التقديمي المفكوك.
} finally {
presentation.dispose();
}
فتح العروض الكبيرة
يوفر Aspose.Slides خيارات—خصوصًا طريقة getBlobManagementOptions في فئة LoadOptions—لمساعدتك في تحميل العروض الكبيرة.
الكود التالي بلغة JavaScript يوضح تحميل عرض تقديمي كبير (على سبيل المثال، 2 جيجابايت):
const filePath = "LargePresentation.pptx";
let loadOptions = new aspose.slides.LoadOptions();
// اختر سلوك KeepLocked — سيبقى ملف العرض مقفولًا طوال مدة
// كائن Presentation، لكن لا يحتاج إلى تحميله في الذاكرة أو نسخه إلى ملف مؤقت.
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(aspose.slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 ميجابايت
let presentation = new aspose.slides.Presentation(filePath, loadOptions);
try {
// تم تحميل العرض الكبير ويمكن استخدامه، بينما يظل استهلاك الذاكرة منخفضًا.
// إجراء تغييرات على العرض.
presentation.getSlides().get_Item(0).setName("Large presentation");
// حفظ العرض إلى ملف آخر. يظل استهلاك الذاكرة منخفضًا أثناء هذه العملية.
presentation.save("LargePresentation-copy.pptx", aspose.slides.SaveFormat.Pptx);
// لا تفعل هذا! سيتم إثارة استثناء إدخال/إخراج لأن الملف مقفول حتى يتم التخلص من كائن العرض.
//fs.unlinkSync(filePath);
} finally {
presentation.dispose();
}
// يمكن فعل ذلك هنا. الملف المصدر لم يعد مقفولًا بواسطة كائن العرض.
fs.unlinkSync(filePath);
Info
لتجاوز بعض القيود عند العمل مع التيارات، قد يقوم Aspose.Slides بنسخ محتويات التيار. تحميل عرض تقديمي كبير من تيار يؤدي إلى نسخ العرض وقد يبطئ عملية التحميل. لذلك، عندما تحتاج إلى تحميل عرض تقديمي كبير، نوصي بشدة باستخدام مسار ملف العرض بدلاً من التيار.
عند إنشاء عرض يحتوي على كائنات كبيرة (فيديو، صوت، صور عالية الدقة، إلخ)، يمكنك استخدام BLOB management لتقليل استهلاك الذاكرة.
التحكم في الموارد الخارجية
يوفر Aspose.Slides الواجهة IResourceLoadingCallback التي تسمح لك بإدارة الموارد الخارجية. يوضح الكود التالي بلغة JavaScript كيفية استخدام الواجهة IResourceLoadingCallback:
const ImageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
resourceLoading: function(args) {
if (args.getOriginalUri().endsWith(".jpg")) {
try {
// تحميل صورة بديلة.
const imageData = fs.readFileSync("aspose-logo.jpg");
args.setData(imageData);
return aspose.slides.ResourceLoadingAction.UserProvided;
} catch {
return aspose.slides.ResourceLoadingAction.Skip;
}
} else if (args.getOriginalUri().endsWith(".png")) {
// تعيين عنوان URL بديل.
args.setUri("http://www.google.com/images/logos/ps_logo2.png");
return aspose.slides.ResourceLoadingAction.Default;
}
// تخطي جميع الصور الأخرى.
return aspose.slides.ResourceLoadingAction.Skip;
}
});
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setResourceLoadingCallback(ImageLoadingHandler);
let presentation = new aspose.slides.Presentation("Sample.pptx", loadOptions);
تحميل العروض دون كائنات ثنائية مضمّنة
يمكن أن يحتوي عرض PowerPoint على الأنواع التالية من الكائنات الثنائية المضمّنة:
- مشروع VBA (يمكن الوصول إليه عبر Presentation.getVbaProject);
- بيانات كائن OLE المضمّنة (يمكن الوصول إليها عبر OleEmbeddedDataInfo.getEmbeddedFileData);
- بيانات ثنائية لعنصر تحكم ActiveX (يمكن الوصول إليها عبر Control.getActiveXControlBinary).
باستخدام طريقة LoadOptions.setDeleteEmbeddedBinaryObjects، يمكنك تحميل عرض تقديمي دون أي كائنات ثنائية مضمّنة.
هذه الطريقة مفيدة لإزالة المحتوى الثنائي الذي قد يكون ضارًا. يوضح الكود التالي بلغة JavaScript كيفية تحميل عرض تقديمي دون أي محتوى ثنائي مضمّن:
let loadOptions = new aspose.slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);
let presentation = new aspose.slides.Presentation("malware.ppt", loadOptions);
try {
// قم بتنفيذ عمليات على العرض التقديمي.
} finally {
presentation.dispose();
}
الأسئلة الشائعة
كيف يمكنني معرفة أن الملف تالف ولا يمكن فتحه؟
ستحصل على استثناء أثناء التحميل يوضح حدوث خطأ في التحليل/التحقق من الصيغة. غالبًا ما تشير هذه الأخطاء إلى بنية ZIP غير صالحة أو سجلات PowerPoint معطوبة.
ماذا يحدث إذا كانت الخطوط المطلوبة مفقودة عند الفتح؟
سيتم فتح الملف، لكن عملية التصيير/التصدير قد تستبدل الخطوط. يمكنك تهيئة استبدال الخطوط أو إضافة الخطوط المطلوبة إلى بيئة التشغيل.
ماذا عن الوسائط المضمّنة (فيديو/صوت) عند الفتح؟
تتحول إلى موارد داخل العرض. إذا كانت الوسائط مُشار إليها عبر مسارات خارجية، تأكد من أن هذه المسارات متاحة في بيئتك؛ وإلا قد تقوم عملية التصيير/التصدير بإغفال الوسائط.