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

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

يتيح لك Aspose.Slides FOSS for C++ فتح أي ملف .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.


انظر أيضًا

 العربية