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

نظرة عامة

بعد إنشاء عرض تقديمي أو فتح عرض موجود، استخدم طريقة Presentation.Save لكتابة النتيجة. يمكن لـ Aspose.Slides for .NET حفظ عرض تقديمي إلى ملف أو تدفق بصيغة PowerPoint أو OpenDocument أو PDF أو صيغ أخرى. تغطي الأقسام التالية عمليات الحفظ القياسية والخيارات المتاحة لإخراج PPTX.

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

لحفظ عرض تقديمي إلى ملف، مرّر مسار الإخراج وقيمة SaveFormat إلى طريقة Presentation.Save. تحدد قيمة التنسيق نوع الملف الذي تُنشئه Aspose.Slides.

المثال التالي يُنشئ عرض تقديمي ويحفظه كملف PPTX:

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

using var presentation = new Presentation();

// أضف أو عدّل محتوى العرض التقديمي هنا.

presentation.Save("Output.pptx", SaveFormat.Pptx);

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

لأمثلة اكتشاف الملف والتدفق، سلوك العروض التي تم إنشاؤها حديثًا، والتمييز بين تنسيقات المصدر والإخراج، راجع Determine the Original Presentation Format.

في تطبيق معالجة دفعات، قد لا يكون تنسيق الإدخال معروفًا مسبقًا. بعد تحميل ملف، اقرأ تنسيقه الأصلي من خاصية IPresentation.SourceFormat. مرّر القيمة الناتجة من SourceFormat إلى SlideUtil.ToSaveFormat للحصول على قيمة SaveFormat المقابلة، ثم استخدم Presentation.Save لكتابة العرض المعدل.

المثال الكامل التالي يعالج كل ملف في دليل الإدخال، يحدّث عنوانه، ويحفظه إلى دليل الإخراج بالتنسيق الذي تم تحميله منه:

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

var inputDirectory = "Input";
var outputDirectory = "Output";

Directory.CreateDirectory(outputDirectory);

foreach (var inputPath in Directory.EnumerateFiles(inputDirectory))
{
    try
    {
        using var presentation = new Presentation(inputPath);

        var sourceFormat = presentation.SourceFormat;
        var saveFormat = SlideUtil.ToSaveFormat(sourceFormat);

        presentation.DocumentProperties.Title = "Processed by the batch application";

        var outputPath = Path.Combine(outputDirectory, Path.GetFileName(inputPath));
        presentation.Save(outputPath, saveFormat);
    }
    catch (ArgumentException exception)
    {
        Console.Error.WriteLine($"Cannot map the source format of '{inputPath}': {exception.Message}");
    }
    catch (Exception exception)
    {
        Console.Error.WriteLine($"Cannot process '{inputPath}': {exception.Message}");
    }
}

SlideUtil.ToSaveFormat يطابق PPT و PPTX و ODP و PPTM و PPSX و PPSM و POTX و POTM و PPS و POT و OTP و FODP و PowerPoint XML إلى صيغ الحفظ المقابلة للعروض. يطابق صيغ مصدر العرض فقط؛ لا يُقصد منه اختيار صيغ التصدير مثل PDF أو HTML أو TIFF أو الصور. تمرير قيمة SourceFormat غير مدعومة أو غير صالحة ينتج عنه استثناء ArgumentException.

ملفات PPT و PPS و POT القديمة تستخدم نفس الحاوية الثنائية. عند تحميل مثل هذا العرض من تدفق دون امتداد ملف، قد يُعرّف ملف PPS أو POT كـ PPT. إذا كان من الضروري الحفاظ على هذه الأنواع القديمة، احتفظ باسم الملف الأصلي أو بيانات التعريف الخاصة بالتنسيق بشكل منفصل واستخدمها عند اختيار اسم ملف الإخراج وتنسيقه.

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

للكتابة إلى عرض تقديمي دون الاعتماد على مسار ملف نهائي، مرّر كائن Stream قابل للكتابة وقيمة SaveFormat إلى طريقة Presentation.Save. هذا النهج مفيد عندما يجب إرجاع الإخراج من خدمة ويب، أو تخزينه في قاعدة بيانات، أو معالجته في الذاكرة.

المثال التالي يحفظ عرضًا تقديميًا جديدًا إلى تدفق ملف:

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

using var presentation = new Presentation();
using var outputStream = new FileStream("Output.pptx", FileMode.Create);

presentation.Save(outputStream, SaveFormat.Pptx);

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

يمكنك تحديد طريقة العرض التي يفتح فيها PowerPoint العرض المحفوظ أولًا. اضبط خاصية ViewProperties.LastView إلى قيمة ViewType قبل الحفظ.

المثال التالي يضبط عرض الـ Slide Master كطريقة العرض الأولية:

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

using var presentation = new Presentation();

presentation.ViewProperties.LastView = ViewType.SlideMasterView;
presentation.Save("SlideMasterView.pptx", SaveFormat.Pptx);

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

لإنشاء ملف PPTX يطابق الملف التعريفي Strict لـ Office Open XML، أنشئ مثيلًا من PptxOptions واضبط خاصية Conformance إلى Conformance.Iso29500_2008_Strict. ثم مرّر الخيارات إلى طريقة Presentation.Save.

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

var options = new PptxOptions
{
    Conformance = Conformance.Iso29500_2008_Strict
};

using var presentation = new Presentation();

presentation.Save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);

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

أرشيف ZIP القياسي يحد من حجم كل عنصر مضغوط وغير مضغوط، الحجم الكلي للأرشيف، وعدد العناصر. بما أن ملف PPTX هو أرشيف ZIP، قد يتجاوز العرض كبير الحجم هذه الحدود. امتدادات ZIP64 ترفع الحدود المطبقة على الحجم وعدد العناصر.

استخدم خاصية PptxOptions.Zip64Mode للتحكم فيما إذا كانت Aspose.Slides تكتب امتدادات ZIP64:

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

المثال التالي يفعّل دائمًا امتدادات ZIP64 للعرض الناتج:

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

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

var options = new PptxOptions
{
    Zip64Mode = Zip64Mode.Always
};

presentation.Save("OutputZip64.pptx", SaveFormat.Pptx, options);

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

لإخراج PPTX، يمكنك موازنة سرعة الحفظ مقابل حجم الملف بضبط خاصية PptxOptions.CompressionLevel. تعداد CompressionLevel يقدم القيم التالية:

  • None يخزن البيانات بدون ضغط.
  • Level1 يوفر أسرع ضغط وأكبر حجم مضغوط.
  • Level2 إلى Level5 يفضّلون تدريجيًا حجمًا أصغر على حساب سرعة الحفظ.
  • Level6 يوازن بين سرعة الحفظ وحجم الملف. هذا هو المستوى الافتراضي.
  • Level7 و Level8 يفضلان حجمًا أصغر على حساب سرعة الحفظ.
  • Level9 يوفر أقوى ضغط ويتطلب أكبر وقت معالجة.

المثال التالي يحفظ عرضًا تقديميًا بدون ضغط:

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

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

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.None
};

presentation.Save("OutputNoCompression.pptx", SaveFormat.Pptx, options);

المثال التالي يستخدم أقصى مستوى ضغط:

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

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

var options = new PptxOptions
{
    CompressionLevel = CompressionLevel.Level9
};

presentation.Save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);

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

عند حفظ عرض تقديمي كـ PPTX، تتحكم خاصية PptxOptions.RefreshThumbnail في الصورة المصغرة للمستند:

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

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

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

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

var options = new PptxOptions
{
    RefreshThumbnail = false
};

presentation.Save("Output.pptx", SaveFormat.Pptx, options);

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

لمراقبة عملية الحفظ، نفّذ الواجهة IProgressCallback وعين التنفيذ إلى خاصية ISaveOptions.ProgressCallback. ثم ستستدعي Aspose.Slides طريقة IProgressCallback.Reporting بقيم التقدم أثناء التصدير.

المثال التالي يُبلغ عن تقدم تصدير PDF إلى وحدة التحكم:

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

var options = new PdfOptions
{
    ProgressCallback = new ExportProgressHandler()
};

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

presentation.Save("Output.pdf", SaveFormat.Pdf, options);

class ExportProgressHandler : IProgressCallback
{
    public void Reporting(double progressValue)
    {
        var progress = Convert.ToInt32(progressValue);
        Console.WriteLine($"{progress}% of the file has been converted.");
    }
}

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

هل يدعم Aspose.Slides الحفظ المتزايد أو “الحفظ السريع”?

لا. كل عملية حفظ تكتب ملف ناتج كامل بدلاً من تحديث الأجزاء المتغيّرة فقط.

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

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

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

تظل Hyperlinks موجودة في العرض. لا تقوم Aspose.Slides بنسخ الملفات المرتبطة خارجيًا، لذا يجب أن يكون للعرض المحفوظ القدرة على الوصول إلى مواقعها.

هل يمكنني حفظ بيانات تعريف المستند مثل المؤلف والعنوان والشركة وتاريخ الإنشاء؟

نعم. اضبط document properties المناسبة قبل الحفظ، وستكتب Aspose.Slides هذه الخصائص إلى ملف الإخراج.