نحوه بارگذاری ارائه‌ها در C++

نحوه بارگذاری ارائه‌ها در C++

Aspose.Slides FOSS for C++ به شما امکان می‌دهد هر فایل .pptx را باز کنید، محتویات آن را بررسی کنید و یا آن را به‌صورت PPTX ذخیره کنید یا داده‌ها را از آن استخراج کنید. این راهنما شامل باز کردن یک فایل، پیمایش اسلایدها، خواندن متن شکل‌ها و ذخیره‌سازی دورانی است.

راهنمای گام به گام

مرحله ۱: ساخت و لینک کردن کتابخانه

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 .

مرحله ۲: باز کردن یک ارائه موجود

مسیر فایل را به سازنده 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 در فایل منبع به همان صورت حفظ می‌شوند: کتابخانه هرگز محتوایی را که هنوز درک نمی‌کند حذف نمی‌کند.


مرحله ۳: بررسی اسلایدها

بر روی تمام اسلایدها تکرار کنید و تعداد اشکال آن‌ها را چاپ کنید:

#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 (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 در API فعلی در دسترس نیست. ابتدا بایت‌ها را در یک فایل موقت بنویسید، سپس مسیر را به سازنده Presentation پاس دهید.


موارد مرتبط

 فارسی