فتح العروض التقديمية في JavaScript

المقدمة

Aspose.Slides for Node.js via Java يمكنه تحميل عروض PowerPoint وOpenDocument من الملفات وتدفقات البيانات. بعد تحميل العرض، يمكنك فحص هيكله، تعديل الشرائح، إدارة الموارد، وحفظه بالصيغ الأصلية أو بأي صيغة مدعومة أخرى.

يمكن تخصيص سلوك التحميل عبر الفئة LoadOptions. على سبيل المثال، يمكنك توفير كلمة مرور الفتح، إبقاء الكائنات الثنائية الكبيرة خارج ذاكرة Node.js، التحكم في الموارد الخارجية، أو حذف البيانات الثنائية المدمجة.

فتح العروض التقديمية

لفتح عرض تقديمي موجود، مرّر مسار ملفه إلى منشئ Presentation. احرص على تحرير العرض بعد الاستخدام حتى يتم تحرير مقبض الملف والبيانات المؤقتة وغيرها من الموارد بسرعة.

يعرض المثال التالي بلغة JavaScript كيفية فتح عرض تقديمي والحصول على عدد الشرائح الخاصة به:

const slides = require("aspose.slides.via.java");

const presentation = new slides.Presentation("sample.pptx");
try {
    console.log("Slide count: " + presentation.getSlides().size());
} finally {
    presentation.dispose();
}

فتح العروض التقديمية المحمية بكلمة مرور

كلمة المرور تشفر محتوى العرض التقديمي. لتحميل العرض بالكامل، مرّر كلمة المرور الصحيحة إلى LoadOptions.setPassword وقدم الخيارات إلى منشئ Presentation. سيفشل التحميل إذا كانت كلمة المرور مفقودة أو غير صحيحة.

const slides = require("aspose.slides.via.java");

const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");

const presentation = new slides.Presentation("encrypted-presentation.pptx", loadOptions);
try {
    console.log("Slide count: " + presentation.getSlides().size());
} finally {
    presentation.dispose();
}

للاطلاع على اكتشاف كلمة المرور، والتحقق منها، وسير عمل التشفير، راجع Password-Protect Presentations. إذا تم حفظ عرض مشفر مع خصائص مستند عامة، يمكن قراءة تلك الخصائص بدون كلمة مرور؛ انظر Manage Presentation Properties.

فتح عروض تقديمية ضخمة

تُعيد الدالة LoadOptions.getBlobManagementOptions خيارات تتحكم في كيفية تعامل Aspose.Slides مع الكائنات الثنائية الكبيرة مثل الصور، الصوت، والفيديو. يمكنك إبقاء ملف المصدر مقفلاً، السماح بالملفات المؤقتة، وتحديد مقدار بيانات BLOB المحتفظ بها في الذاكرة.

يُظهر الكود التالي بلغة JavaScript تحميل عرض تقديمي كبير (على سبيل المثال، 2 جيجابايت):

const slides = require("aspose.slides.via.java");

const filePath = "large-presentation.pptx";

const loadOptions = new slides.LoadOptions();
loadOptions.getBlobManagementOptions().setPresentationLockingBehavior(slides.PresentationLockingBehavior.KeepLocked);
loadOptions.getBlobManagementOptions().setTemporaryFilesAllowed(true);
loadOptions.getBlobManagementOptions().setMaxBlobsBytesInMemory(10 * 1024 * 1024);

const presentation = new slides.Presentation(filePath, loadOptions);
try {
    presentation.getSlides().get_Item(0).setName("Large presentation");
    presentation.save("large-presentation-copy.pptx", slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

التحكم في الموارد الخارجية

تقبل الدالة LoadOptions.setResourceLoadingCallback تنفيذًا لـ IResourceLoadingCallback. يمكن للاستدعاء إمداد بيانات بديلة، إعادة توجيه مورد، استخدام المحمل الافتراضي، أو تخطي المورد. يُستخدم هذا عندما تحتوي العروض على صور خارجية يجب حلها وفقًا لقواعد الأمان أو التخزين الخاصة بالتطبيق.

const slides = require("aspose.slides.via.java");
const fs = require("fs");
const java = require("java");

const imageLoadingHandler = java.newProxy("com.aspose.slides.IResourceLoadingCallback", {
    resourceLoading: function(args) {
        const isJpeg = args.getOriginalUri().toLowerCase().endsWith(".jpg");
        const approvedImagePath = "approved-image.jpg";
        if (!isJpeg || !fs.existsSync(approvedImagePath)) {
            return slides.ResourceLoadingAction.Skip;
        }

        try {
            const imageData = fs.readFileSync(approvedImagePath);
            args.setData(imageData);
            return slides.ResourceLoadingAction.UserProvided;
        } catch (error) {
            console.error("The approved replacement image could not be read.");
            return slides.ResourceLoadingAction.Skip;
        }
    }
});

const loadOptions = new slides.LoadOptions();
loadOptions.setResourceLoadingCallback(imageLoadingHandler);

const presentation = new slides.Presentation("presentation-with-external-images.pptx", loadOptions);
try {
    console.log("Slide count: " + presentation.getSlides().size());
} finally {
    presentation.dispose();
}

تحميل العروض التقديمية دون كائنات ثنائية مدمجة

قد يحتوي العرض التقديمي على بيانات ثنائية مدمجة لا تحتاجها التطبيق أو لا يرغب في الاحتفاظ بها. تشمل الأمثلة:

قم بتعيين LoadOptions.setDeleteEmbeddedBinaryObjects إلى true لإزالة هذه البيانات الثنائية أثناء التحميل. احفظ العرض الذي تم تحميله لتثبيت النتيجة المنقاة.

يقلل هذا الخيار من التعرض للحمولات المدمجة غير المرغوب فيها، لكنه ليس نظامًا كاملاً لاكتشاف البرمجيات الضارة أو تنقية المحتوى.

const slides = require("aspose.slides.via.java");

const loadOptions = new slides.LoadOptions();
loadOptions.setDeleteEmbeddedBinaryObjects(true);

const presentation = new slides.Presentation("presentation-with-embedded-data.pptx", loadOptions);
try {
    presentation.save("presentation-without-embedded-data.pptx", slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

الأسئلة الشائعة

كيف يمكنني معرفة أن الملف تالف ولا يمكن فتحه؟

تطرح Aspose.Slides استثناءً متعلقًا بالتحليل أو تنسيق الملف أثناء التحميل. عالج هذا الفشل بشكل منفصل عن خطأ كلمة المرور غير الصحيحة حتى يتمكن التطبيق من الإبلاغ عن السبب بدقة.

ماذا يحدث إذا كانت الخطوط المطلوبة مفقودة؟

يمكن للعرض التقديمي أن يظل يُحمَّل، لكن قد يستبدل المحرك الخطوط أثناء العرض والتصدير. يمكنك configure font substitution أو provide custom fonts لجعل المخرجات أكثر قابلية للتنبؤ.

هل تحميل العرض يحمِّل أيضًا الوسائط المدمجة؟

تصبح ملفات الصوت والفيديو المدمجة متاحة عبر نموذج كائن العرض التقديمي. تُحل الموارد الخارجية وفق سلوك تحميل الموارد المكوَّن وقد تكون غير متاحة إذا تعذّر الوصول إلى مواقعها.