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

المقدمة

Aspose.Slides for .NET يمكنه تحميل عروض PowerPoint وOpenDocument من الملفات والتيارات. بعد تحميل العرض، يمكنك فحص هيكله، تعديل الشرائح، إدارة الموارد، وحفظه بالتنسيق الأصلي أو بأي تنسيق مدعوم آخر.

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

فتح العروض

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

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

using System;
using Aspose.Slides;

using var presentation = new Presentation("sample.pptx");

Console.WriteLine("Slide count: " + presentation.Slides.Count);

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

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

using System;
using Aspose.Slides;

var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-presentation.pptx", loadOptions);

Console.WriteLine("Slide count: " + presentation.Slides.Count);

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

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

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

الكود التالي بلغة C# يوضح تحميل عرض كبير (مثلاً 2 GB):

using Aspose.Slides;
using Aspose.Slides.Export;

const string filePath = "large-presentation.pptx";

var loadOptions = new LoadOptions
{
    BlobManagementOptions =
    {
        PresentationLockingBehavior = PresentationLockingBehavior.KeepLocked,
        IsTemporaryFilesAllowed = true,
        MaxBlobsBytesInMemory = 10 * 1024 * 1024
    }
};

using var presentation = new Presentation(filePath, loadOptions);

presentation.Slides[0].Name = "Large presentation";
presentation.Save("large-presentation-copy.pptx", SaveFormat.Pptx);

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

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

using System;
using System.IO;
using Aspose.Slides;

internal static class OpenPresentationExample
{
    private static void Main()
    {
        var loadOptions = new LoadOptions
        {
            ResourceLoadingCallback = new ImageLoadingHandler()
        };

        using var presentation = new Presentation("presentation-with-external-images.pptx", loadOptions);
        Console.WriteLine("Slide count: " + presentation.Slides.Count);
    }

    private sealed class ImageLoadingHandler : IResourceLoadingCallback
    {
        public ResourceLoadingAction ResourceLoading(IResourceLoadingArgs args)
        {
            var isJpeg = args.OriginalUri.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase);
            if (!isJpeg || !File.Exists("approved-image.jpg"))
            {
                return ResourceLoadingAction.Skip;
            }

            var imageData = File.ReadAllBytes("approved-image.jpg");
            args.SetData(imageData);
            return ResourceLoadingAction.UserProvided;
        }
    }
}

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

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

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

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

using Aspose.Slides;
using Aspose.Slides.Export;

var loadOptions = new LoadOptions
{
    DeleteEmbeddedBinaryObjects = true
};

using var presentation = new Presentation("presentation-with-embedded-data.pptx", loadOptions);

presentation.Save("presentation-without-embedded-data.pptx", SaveFormat.Pptx);

الأسئلة المتداولة

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

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

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

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

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

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