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

نظرة عامة

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

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

لفتح عرض تقديمي موجود، قم بإنشاء كائن من الفئة Presentation ومرّر مسار الملف إلى مُنشئها.

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

// إنشاء كائن من فئة Presentation وتمرير مسار ملف إلى مُنشئها.
using (Presentation presentation = new Presentation("Sample.pptx"))
{
    // طباعة إجمالي عدد الشرائح في العرض التقديمي.
    System.Console.WriteLine(presentation.Slides.Count);
}

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

عند الحاجة إلى فتح عرض تقديمي محمي بكلمة مرور، مرّر كلمة المرور عبر خاصية Password في فئة LoadOptions لفك التشفير وتحميله. يوضح الكود التالي بلغة C# هذه العملية:

LoadOptions loadOptions = new LoadOptions {Password = "YOUR_PASSWORD"};
using (Presentation presentation = new Presentation("Sample.pptx", loadOptions))
{
    // إجراء عمليات على العرض التقديمي المفكوك.
}

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

توفر Aspose.Slides خيارات—وخاصة خاصية BlobManagementOptions في فئة LoadOptions—لمساعدتك في تحميل العروض التقديمية الكبيرة.

يوضح الكود التالي بلغة C# كيفية تحميل عرض تقديمي كبير (على سبيل المثال، 2 جيجابايت):

const string filePath = "LargePresentation.pptx";

LoadOptions loadOptions = new LoadOptions
{
    BlobManagementOptions = 
    {
        // اختر سلوك KeepLocked — سيظل ملف العرض مقفولًا طوال مدة 
        // مثال Presentation، ولكن لا تحتاج إلى تحميله في الذاكرة أو نسخه إلى ملف مؤقت.
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024 // 10 ميجابايت
    }
};

using (Presentation presentation = new Presentation(filePath, loadOptions))
{
    // تم تحميل العرض الكبير ويمكن استخدامه، مع بقاء استهلاك الذاكرة منخفضًا.

    // إجراء تغييرات على العرض التقديمي.
    presentation.Slides[0].Name = "Large presentation";

    // احفظ العرض التقديمي إلى ملف آخر. يبقى استهلاك الذاكرة منخفضًا أثناء هذه العملية.
    presentation.Save("LargePresentation-copy.pptx", SaveFormat.Pptx);

    // لا تفعل ذلك! سيتم إلقاء استثناء I/O لأن الملف مقفل حتى يتم التخلص من كائن العرض.
    File.Delete(filePath);
}

// يمكن القيام بذلك هنا. لم يعد ملف المصدر مقفلًا من قبل كائن العرض.
File.Delete(filePath);

التحكم بالمصادر الخارجية

توفر Aspose.Slides واجهة IResourceLoadingCallback التي تتيح لك إدارة الموارد الخارجية. يوضح الكود التالي بلغة C# كيفية استخدام واجهة IResourceLoadingCallback:

LoadOptions loadOptions = new LoadOptions();
loadOptions.ResourceLoadingCallback = new ImageLoadingHandler();

Presentation presentation = new Presentation("Sample.pptx", loadOptions);
public class ImageLoadingHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
    {
        if (args.OriginalUri.EndsWith(".jpg"))
        {
            try
            {
                // تحميل صورة بديلة.
                byte[] imageData = File.ReadAllBytes("aspose-logo.jpg");
                args.SetData(imageData);
                return ResourceLoadingAction.UserProvided;
            }
            catch (Exception)
            {
                return ResourceLoadingAction.Skip;
            }
        }
        else if (args.OriginalUri.EndsWith(".png"))
        {
            // تعيين عنوان URL بديل.
            args.Uri = "http://www.google.com/images/logos/ps_logo2.png";
            return ResourceLoadingAction.Default;
        }

        // تجاوز جميع الصور الأخرى.
        return ResourceLoadingAction.Skip;
    }
}

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

يمكن أن يحتوي عرض PowerPoint على الأنواع التالية من الكائنات الثنائية المضمّنة:

باستخدام خاصية ILoadOptions.DeleteEmbeddedBinaryObjects يمكنك تحميل عرض تقديمي بدون أي كائنات ثنائية مضمّنة.

هذه الخاصية مفيدة لإزالة المحتوى الثنائي المحتمل أن يكون ضارًا. يوضح الكود التالي بلغة C# كيفية تحميل عرض تقديمي بدون أي محتوى ثنائي مضمّن:

LoadOptions loadOptions = new LoadOptions()
{
    DeleteEmbeddedBinaryObjects = true
}

using (Presentation presentation = new Presentation("malware.ppt", loadOptions))
{
    // تنفيذ عمليات على العرض التقديمي.
}

الأسئلة المتكررة

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

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

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

سيفتح الملف، لكن عملية العرض/التصدير لاحقًا قد تستبدل الخطوط. يمكنك تكوين استبدال الخطوط أو إضافة الخطوط المطلوبة إلى بيئة التشغيل.

ماذا عن الوسائط المضمنة (فيديو/صوت) عند الفتح؟

تصبح الوسائط متاحة كموارد للعرض. إذا كانت الوسائط مُشار إليها عبر مسارات خارجية، تأكد من أن هذه المسارات متاحة في بيئتك؛ وإلا قد تُهمل عملية العرض/التصدير تلك الوسائط.