كيفية إنشاء العروض التقديمية في C++

كيفية إنشاء العروض التقديمية في C++

Aspose.Slides FOSS for C++ lets you create PowerPoint presentations entirely in C++ with no dependency on Microsoft Office. This guide shows how to create a new presentation, add slides and shapes, format text, and save the result.

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

الخطوة 1: إضافة المكتبة إلى مشروع CMake الخاص بك

استخدم CMake FetchContent لدمج المكتبة مباشرة من GitHub.C++20 أو ما بعد مطلوب.

cmake_minimum_required(VERSION 3.20)
project(my_slides_app LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(FetchContent)
FetchContent_Declare(
    aspose_slides_foss
    GIT_REPOSITORY https://github.com/aspose-slides-foss/Aspose.Slides-FOSS-for-Cpp.git
    GIT_TAG main
)
FetchContent_MakeAvailable(aspose_slides_foss)

add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE aspose_slides_foss)

لا تحتاج إلى أي حزم نظام أخرى.


الخطوة 2: إدراج الأقواس المطلوبة

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

كل الأنواع التي تعيش في Aspose::Slides::Foss اسم مساحة.للمختصر، تستخدم الأمثلة أدناه اسم المساحة الاسمية:

namespace asf = Aspose::Slides::Foss;

الخطوة الثالثة: إعداد عرض

بناء أ Presentation على الستار. تبدأ عرض جديد مع شريط واحد أبيض.

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

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

    asf::Presentation prs;
    std::cout << "Slides in new presentation: " << prs.slides().size() << "\n";
    prs.save("output.pptx", asf::SaveFormat::PPTX);
    return 0;
}

أهمية : استخدام التوزيع الصلب أو std::unique_ptr وهكذا يطلق المدمر الموارد الداخلية تلقائيا.


الخطوة 4: الوصول إلى الشرائح

أول شريط هو في المؤشر 0.A white presentation has exactly one slide.

namespace asf = Aspose::Slides::Foss;

asf::Presentation prs;
auto& slide = prs.slides()[0]; // zero-based index
prs.save("output.pptx", asf::SaveFormat::PPTX);

الخطوة الخامسة: إضافة شكل

استخدام slide.shapes().add_auto_shape() إضافة AutoShape.المعايير هي (shape_type, x, y, width, height) كلها في النقاط (1 نقطة = 1/72 بوصة؛ الشريط القياسي هو 720 × 540 بيتر).

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

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

    asf::Presentation prs;
    auto& slide = prs.slides()[0];

    // Rectangle at (50, 50) with 400 wide and 120 tall
    auto& shape = slide.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 50, 50, 400, 120);

    // Set text on the shape's text frame
    shape.text_frame()->set_text("Hello from Aspose.Slides FOSS!");

    prs.save("with-shape.pptx", asf::SaveFormat::PPTX);
    return 0;
}

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

مكالمة prs.save(path, SaveFormat::PPTX) قبل أن يُعطى Presentation PPTX هو تنسيق الناتج الوحيد المدعوم.

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

يتم كتابة الملف بشكل ذاتي؛ إذا حدث خطأ قبل هذا المكالمة، لا يتم إنشاء ملف الناتج.


نموذج عمل كامل

يخلق البرنامج التالي عرضًا مزدوجًّا مع شكل عنوان على الشريط الأول وطاولة على الثانية.

#include <Aspose/Slides/Foss/presentation.h>
#include <vector>
#include <string>

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

    asf::Presentation prs;

    // --- Slide 1: title shape ---
    auto& slide1 = prs.slides()[0];
    auto& title = slide1.shapes().add_auto_shape(
        asf::ShapeType::RECTANGLE, 40, 40, 640, 80);
    title.text_frame()->set_text("Q1 Results: Executive Summary");
    auto& fmt = title.text_frame()->paragraphs()[0].portions()[0].portion_format();
    fmt.set_font_height(32);
    fmt.set_font_bold(asf::NullableBool::TRUE);
    fmt.fill_format().set_fill_type(asf::FillType::SOLID);
    fmt.fill_format().solid_fill_color().set_color(
        asf::Drawing::Color::from_argb(255, 0, 70, 127));

    // --- Slide 2: table ---
    prs.slides().add_empty_slide(&prs.layout_slides()[0]);
    auto& slide2 = prs.slides()[1];
    std::vector<double> col_w = {200.0, 120.0, 120.0};
    std::vector<double> row_h = {40.0, 40.0, 40.0};
    auto& table = slide2.shapes().add_table(40, 40, col_w, row_h);

    std::vector<std::string> headers = {"Region", "Revenue", "Growth"};
    std::vector<std::vector<std::string>> data = {
        {"North", "$1.2M", "+8%"},
        {"South", "$0.9M", "+4%"},
    };
    for (size_t col = 0; col < headers.size(); ++col) {
        table.rows()[0][col].text_frame()->set_text(headers[col]);
    }
    for (size_t r = 0; r < data.size(); ++r) {
        for (size_t c = 0; c < data[r].size(); ++c) {
            table.rows()[r + 1][c].text_frame()->set_text(data[r][c]);
        }
    }

    prs.save("q1-results.pptx", asf::SaveFormat::PPTX);
    return 0;
}

مشكلات و تصحيحات مشتركة

مجاني أو مزدوج Presentation التدمير

تخزين مرجعية أو مؤشر إلى شريط أو شكل بعد Presentation تم إلغاء جميع الإشارات التي تم استردادها بواسطة slides(), shapes(),وما إلى ذلك، يتم إلغاءها إذا كان Presentation أضواء التدمير - الحفاظ على Presentation الحيوية طوال فترة استخدامك للأطفال.

SaveFormat::PPTX is not a function خطأ الكمبيوتر

SaveFormat::PPTX هو قيمة واحدة وليس وظيفة.استخدمها ك prs.save("file.pptx", asf::SaveFormat::PPTX).

الخطأ: إشارة غير محددة إلى Aspose::Slides::Foss::Presentation

تأكد من أنك CMakeLists.txt الارتباط بالكتبة مع target_link_libraries(my_app PRIVATE aspose_slides_foss).


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

ما هو حجم الشرائح الافتراضية؟?

و جديد Presentation() إنشاء الشرائح في الحجم القياسي 10 × 7.5 بوصة (720 × 540 نقطة) تغيير حجم الشريط لا يدعم بعد في هذا الإصدار.

هل يمكنني إضافة أكثر من شريط واحد؟?

نعم، اتصل بنا prs.slides().add_empty_slide(&prs.layout_slides()[0]) إرفاق شريط خفيف والوصول إليه بواسطة المؤشر:

prs.slides().add_empty_slide(&prs.layout_slides()[0]);
auto& slide2 = prs.slides()[1];

هل يمكنني فتح ملف موجود وإضافة الشرائح؟?

نعم :

asf::Presentation prs("existing.pptx");
prs.slides().add_empty_slide(&prs.layout_slides()[0]);
prs.save("existing.pptx", asf::SaveFormat::PPTX);

ما هي النماذج التي يمكنني حفظها؟?

فقط SaveFormat::PPTX يتم دعمها.الصادرات إلى PDF أو HTML أو SVG أو الصور غير متوفرة في هذا الإصدار.


انظر أيضا

 العربية