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

نظرة عامة

فتح العروض التقديمية في C++ يوضح كيفية استخدام فئة Presentation لفتح عرض تقديمي. يشرح هذا المقال كيفية إنشاء وحفظ العروض التقديمية. فئة Presentation تحتوي على محتويات العرض التقديمي. سواء كنت تقوم بإنشاء عرض تقديمي من الصفر أو تعديل عرض موجود، ستحتاج إلى حفظه عند الانتهاء. باستخدام Aspose.Slides for C++، يمكنك الحفظ إلى ملف أو تيار. يشرح هذا المقال طرق الحفظ المختلفة للعرض التقديمي.

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

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

// إنشاء كائن فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// قم ببعض العمل هنا...

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

presentation->Dispose();

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

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

// إنشاء كائن فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

auto fileStream = MakeObject<FileStream>(u"Output.pptx", FileMode::Create);

// حفظ العرض التقديمي إلى الدفق.
presentation->Save(fileStream, SaveFormat::Pptx);

presentation->Dispose();
fileStream->Close();

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

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

auto presentation = MakeObject<Presentation>();

presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);

presentation->Save(u"SlideMasterView.pptx", SaveFormat::Pptx);
presentation->Dispose();

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

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

المثال أدناه ينشئ عرضًا تقديميًا ويحفظه بتنسيق Office Open XML الصارم.

auto options = MakeObject<PptxOptions>();
options->set_Conformance(Conformance::Iso29500_2008_Strict);

// إنشاء كائن فئة Presentation التي تمثل ملف عرض تقديمي.
auto presentation = MakeObject<Presentation>();

// حفظ العرض التقديمي بتنسيق Office Open XML الصارم.
presentation->Save(u"StrictOfficeOpenXml.pptx", SaveFormat::Pptx, options);
presentation->Dispose();

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

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

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

يمكن استخدام هذه الطريقة مع الأوضاع التالية:

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

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

auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_Zip64Mode(Zip64Mode::Always);

auto presentation = MakeObject<Presentation>(u"Sample.pptx");

presentation->Save(u"OutputZip64.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();

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

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

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

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

auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_RefreshThumbnail(false);

auto presentation = MakeObject<Presentation>(u"Sample.pptx");

presentation->Save(u"Output.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();

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

يتم استخدام واجهة IProgressCallback عبر طريقة set_ProgressCallback التي يُظهرها واجهة ISaveOptions وفئة SaveOptions المجردة. عيّن تنفيذًا لـ IProgressCallback باستخدام set_ProgressCallback لتلقي تحديثات تقدم الحفظ كنسبة مئوية.

الكود التالي يوضح كيفية استخدام IProgressCallback.

class ExportProgressHandler : public IProgressCallback
{
public:
    void Reporting(double progressValue)
    {
        // استخدم قيمة النسبة المئوية للتقدم هنا.
        int progress = static_cast<int>(progressValue);

        Console::WriteLine(u"{0}% of the file has been converted.", progress);
    }
};
auto saveOptions = MakeObject<PdfOptions>();
saveOptions->set_ProgressCallback(MakeObject<ExportProgressHandler>());

auto presentation = MakeObject<Presentation>(u"Sample.pptx");

presentation->Save(u"Output.pdf", SaveFormat::Pdf, saveOptions);
presentation->Dispose();

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

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

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

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

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

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

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

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

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