كيفية تحميل العروض التقديمية في 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 غير معروفة في ملف المصدر: لا تقوم المكتبة بإزالة المحتوى الذي لا يفهمه بعد.
الخطوة الثالثة: فحص الشرائح
اقرأ جميع الشرائح و اكتب عددها :
#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;
}الخطوة الخامسة: قراءة ملكية المستندات
الوصول إلى الخصائص الأساسية للوثيقة من 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: Round-Trip Save
بعد فحص أو تعديل العرض التقديمي، حفظه مرة أخرى إلى 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) لا يتم دعم الملفات.
لا يوجد شكل في النص_frame
بعض الأشكال (الرابطات، PictureFrames، GroupShapes) لا تحتوي على إطار نصي. shape.has_text_frame() قبل الوصول إلى النص.
الأسئلة المتكررة
هل يحفظ تحميل كل المحتوى الأصلي؟?
نعم، يتم حفظ أجزاء XML غير معروفة على النسخ الاحتياطي الدائري.المكتبة تصف فقط الأجزء من نموذج المستند الذي يفهمه، وتمر عبر أي XML التي لا يعرفها.
هل يمكنني تحميل PPTX المحمي كلمة المرور؟?
لا يتم دعم العروض التقديمية المحمية كلمة المرور (المشفوعة) في هذا الإصدار.
هل يمكنني استخراج الصور المدمجة؟?
الوصول إلى مجموعة الصور: prs.images() يعود إلى ImageCollection.كل صورة لها صورة width(), height(),و ، و binary_data() طريقة قراءة بيانات الصورة الخام.
هل يتم دعم الشحن من بوفير الذاكرة؟?
تحميل من أ std::vector<uint8_t> أو std::istream لا يتم التعرض لها في API الحالي. اكتب بايتات إلى ملف مؤقت أولا، ثم انتقل الطريق إلى Presentation البناء .