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

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

Aspose.Slides FOSS for C++ lets you open any .pptx الملف، افحص محتواه، إما احفظه مرة أخرى بصيغة PPTX أو استخرج البيانات منه. يغطي هذا الدليل فتح ملف، التنقل عبر الشرائح، قراءة نص الشكل، وإعادة الحفظ.

دليل خطوة بخطوة

الخطوة 1: بناء وربط المكتبة

git clone https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
cd Aspose.Slides-FOSS-for-Cpp && mkdir build && cd build
cmake .. && cmake --build .

الخطوة 2: فتح عرض تقديمي موجود

مرّر مسار الملف إلى الـ Presentation المُنشئ. المُدمّر يتعامل مع التنظيف.

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("input.pptx");
    std::cout << "Slide count: " << prs.slides().size() << "\n";
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

يتم الحفاظ على أجزاء XML غير المعروفة في ملف المصدر كما هي: المكتبة لا تزيل أبداً محتوى لا تفهمه بعد.


الخطوة 3: فحص الشرائح

تكرار جميع الشرائح وطباعة عدد الأشكال فيها:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        std::cout << "Slide " << i << ": "
                  << slide.shapes().size() << " shapes\n";
    }
    return 0;
}

الخطوة 4: قراءة نص الشكل

تجول عبر الأشكال واقرأ النص من الأشكال التي لديها TextFrame:

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    for (size_t i = 0; i < prs.slides().size(); ++i) {
        auto& slide = prs.slides()[i];
        for (size_t j = 0; j < slide.shapes().size(); ++j) {
            auto& shape = slide.shapes()[j];
            if (shape.has_text_frame()) {
                auto text = shape.text_frame()->text();
                if (!text.empty()) {
                    std::cout << "  Shape text: " << text << "\n";
                }
            }
        }
    }
    return 0;
}

الخطوة 5: قراءة خصائص المستند

الوصول إلى خصائص المستند الأساسية من prs.document_properties():

#include <Aspose/Slides/Foss/presentation.h>
#include <iostream>

int main() {
    namespace asf = Aspose::Slides::Foss;

    asf::Presentation prs("deck.pptx");
    auto& props = prs.document_properties();
    std::cout << "Title:   " << props.title() << "\n";
    std::cout << "Author:  " << props.author() << "\n";
    std::cout << "Subject: " << props.subject() << "\n";
    return 0;
}

الخطوة 6: حفظ دورة كاملة

بعد فحص أو تعديل العرض التقديمي، احفظه مرة أخرى كـ PPTX:

prs.save("output.pptx", asf::SaveFormat::PPTX);

الحفظ إلى مسار مختلف ينشئ ملفًا جديدًا. الحفظ إلى نفس المسار يستبدل الأصلي.


المشكلات الشائعة والحلول

الملف غير موجود أو لا يمكن فتحه

تحقق من أن المسار إلى الـ .pptx الملف صحيح بالنسبة إلى دليل العمل. استخدم std::filesystem::path لبناء مسار قوي:

#include <filesystem>
auto path = std::filesystem::path(__FILE__).parent_path() / "assets" / "deck.pptx";
asf::Presentation prs(path.string());

استثناء: تنسيق الملف غير مدعوم

المكتبة تدعم .pptx (Office Open XML) فقط. القديمة .ppt ملفات (binary PowerPoint 97-2003) غير مدعومة.

الشكل لا يحتوي على text_frame

بعض الأشكال (Connectors, PictureFrames, GroupShapes) لا تحتوي على إطار نص. احمِ باستخدام shape.has_text_frame() قبل الوصول إلى النص.


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

هل يحافظ التحميل على جميع المحتويات الأصلية؟?

نعم. يتم الحفاظ على أجزاء XML غير المعروفة كما هي عند الحفظ المتكرر. المكتبة تقوم فقط بتسلسل الأجزاء من نموذج المستند التي تفهمها، وتُمرّر أي XML لا تتعرف عليه.

هل يمكنني تحميل PPTX محمي بكلمة مرور؟?

العروض المحمية بكلمة مرور (المشفرة) غير مدعومة في هذا الإصدار.

هل يمكنني استخراج الصور المدمجة؟?

الوصول إلى مجموعة الصور: prs.images() تُعيد الـ ImageCollection. كل صورة لديها width(), height(),، و binary_data() طريقة لقراءة بيانات الصورة الخام.

هل يدعم التحميل من مخزن في الذاكرة؟?

التحميل من std::vector<uint8_t> أو std::istream غير متاح في واجهة برمجة التطبيقات الحالية. اكتب البايتات إلى ملف مؤقت أولاً، ثم مرّر المسار إلى الـ Presentation المنشئ.


انظر أيضًا

 العربية