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

نظرة عامة

Open Presentations in C# يوضح كيفية استخدام فئة Presentation لفتح عرض تقديمي. تشرح هذه المقالة كيفية إنشاء العروض التقديمية وحفظها. تحتوي فئة Presentation على محتويات العرض التقديمي. سواء كنت تنشئ عرضًا تقديميًا من الصفر أو تعدّل أحدًا موجودًا، فستحتاج إلى حفظه عند الانتهاء. مع Aspose.Slides لـ .NET، يمكنك حفظه إلى ملف أو تيار. توضح هذه المقالة الطرق المختلفة لحفظ العرض التقديمي.

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

يمكن حفظ عرض تقديمي إلى ملف باستدعاء طريقة Save في فئة Presentation. قم بتمرير اسم الملف وتنسيق الحفظ إلى الطريقة. المثال التالي يوضح كيفية حفظ عرض تقديمي باستخدام Aspose.Slides.

// إنشاء كائن فئة Presentation الذي يمثل ملف عرض تقديمي.
using (Presentation presentation = new Presentation())
{
    // قم ببعض العمل هنا...

    // حفظ العرض التقديمي إلى ملف.
    presentation.Save("Output.pptx", SaveFormat.Pptx);
}

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

يمكنك حفظ عرض تقديمي إلى تيار بتمرير تيار إخراج إلى طريقة Save في فئة Presentation. يمكن كتابة العرض التقديمي إلى عدة أنواع من التيارات. في المثال أدناه، نقوم بإنشاء عرض تقديمي جديد وحفظه إلى تيار ملف.

// إنشاء كائن فئة Presentation الذي يمثل ملف عرض تقديمي.
using (Presentation presentation = new Presentation())
{
    using (FileStream fileStream = new FileStream("Output.pptx", FileMode.Create))
    {
        // حفظ العرض التقديمي إلى التيار.
        presentation.Save(fileStream, SaveFormat.Pptx);
    }
}

حفظ العروض التقديمية بنوع عرض محدد مسبقًا

يتيح لك Aspose.Slides ضبط طريقة العرض الأولية التي يستخدمها PowerPoint عند فتح العرض التقديمي المُنشأ عبر فئة ViewProperties. قم بتعيين الخاصية LastView إلى قيمة من تعداد ViewType.

using (Presentation presentation = new Presentation())
{
    presentation.ViewProperties.LastView = ViewType.SlideMasterView;
    presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);
}

حفظ العروض التقديمية بتنسيق Strict Office Open XML

يتيح لك Aspose.Slides حفظ عرض تقديمي بتنسيق Strict Office Open XML. استخدم فئة PptxOptions وقم بتعيين خاصية التوافق عند الحفظ. إذا قمت بتعيين Conformance.Iso29500_2008_Strict، يتم حفظ الملف الناتج بتنسيق Strict Office Open XML.

PptxOptions options = new PptxOptions()
{
    Conformance = Conformance.Iso29500_2008_Strict
};

// إنشاء كائن فئة Presentation الذي يمثل ملف عرض تقديمي.
using (Presentation presentation = new Presentation())
{
    // حفظ العرض التقديمي في تنسيق Strict Office Open XML.
    presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
}

حفظ العروض التقديمية بتنسيق Office Open XML في وضع Zip64

ملف Office Open XML هو أرشيف ZIP يفرض حدًا قدره 4 جيجابايت (2^32 بايت) على الحجم غير المضغوط لأي ملف، وحجم الملف المضغوط، وإجمالي حجم الأرشيف، كما يقتصر الأرشيف على 65,535 (2^16-1) ملفًا. امتدادات تنسيق ZIP64 ترفع هذه الحدود إلى 2^64.

تتيح لك الخاصية IPptxOptions.Zip64Mode اختيار متى تستخدم امتدادات تنسيق ZIP64 عند حفظ ملف Office Open XML.

توفر هذه الخاصية الأوضاع التالية:

  • IfNecessary يستخدم امتدادات تنسيق ZIP64 فقط إذا تجاوز العرض التقديمي القيود المذكورة أعلاه. هذا هو الوضع الافتراضي.
  • Never لا يستخدم امتدادات تنسيق ZIP64 أبدًا.
  • Always يستخدم امتدادات تنسيق ZIP64 دائمًا.

يعرض الشيفرة التالية كيفية حفظ عرض تقديمي كملف PPTX مع تمكين امتدادات تنسيق ZIP64:

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        Zip64Mode = Zip64Mode.Always
    });
}

حفظ العروض التقديمية دون تحديث الصورة المصغرة

تتحكم الخاصية PptxOptions.RefreshThumbnail في إنشاء الصورة المصغرة عند حفظ عرض تقديمي إلى PPTX:

  • إذا تم تعيينها إلى true، يتم تحديث الصورة المصغرة أثناء الحفظ. هذا هو الوضع الافتراضي.
  • إذا تم تعيينها إلى false، تُحافظ على الصورة المصغرة الحالية. إذا لم يكن للعرض التقديمي صورة مصغرة، فلن يتم إنشاء أي منها.

في الشيفرة أدناه، يتم حفظ العرض التقديمي كملف PPTX دون تحديث صوّرته المصغرة.

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pptx", SaveFormat.Pptx, new PptxOptions()
    {
        RefreshThumbnail = false
    });
}

تحديثات تقدم الحفظ بنسبة مئوية

يتم استخدام الواجهة IProgressCallback عبر الخاصية ProgressCallback التي تعرضها الواجهة ISaveOptions والفئة المجردة SaveOptions. قم بإسناد تنفيذ IProgressCallback إلى ProgressCallback لتلقي تحديثات تقدم الحفظ كنسبة مئوية.

تظهر مقاطع الشيفرة التالية كيفية استخدام IProgressCallback.

ISaveOptions saveOptions = new PdfOptions();
saveOptions.ProgressCallback = new ExportProgressHandler();

using (Presentation presentation = new Presentation("Sample.pptx"))
{
    presentation.Save("Output.pdf", SaveFormat.Pdf, saveOptions);
}
class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        // استخدم قيمة نسبة التقدم هنا.
        int progress = Convert.ToInt32(progressValue);

        Console.WriteLine(progress + "% of the file has been converted.");
    }
}

FAQ

هل يتم دعم “الحفظ السريع” (الحفظ التزايدي) بحيث تُكتب التغييرات فقط؟

لا. كل عملية حفظ تنشئ الملف الهدف بالكامل؛ لا يتم دعم “الحفظ السريع” التزايدي.

هل الحفظ من نفس كائن Presentation آمن في تعدد الخيوط؟

لا. كائن Presentation ليس آمنًا في تعدد الخيوط; يجب حفظه من خيط واحد.

ماذا يحدث للروابط التشعبية والملفات المرتبطة خارجيًا عند الحفظ؟

يتم الحفاظ على Hyperlinks. الملفات المرتبطة خارجيًا (مثل الفيديوهات عبر مسارات نسبية) لا تُنسخ تلقائيًا — تأكد من أن المسارات المرجعية لا تزال قابلة للوصول.

هل يمكنني ضبط/حفظ بيانات تعريف المستند (المؤلف، العنوان، الشركة، التاريخ)؟

نعم. يتم دعم خصائص المستند القياسية وسيتم كتابتها إلى الملف عند الحفظ.