كيفية حفظ العروض التقديمية في C++
Aspose.Slides FOSS for C++ saves presentations exclusively to .pptx تنسيق باستخدام prs.save(path, SaveFormat::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: فتح أو إنشاء عرض
استخدم تخصيص الستار بحيث يغسل المدمر تلقائيًا. save() قبل أن يخرج الكائن من نطاق.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
// Create new
{
asf::Presentation prs;
prs.save("new.pptx", asf::SaveFormat::PPTX);
}
// Open existing
{
asf::Presentation prs("input.pptx");
prs.save("output.pptx", asf::SaveFormat::PPTX);
}
return 0;
}الخطوة الثالثة: حفظ بعد كل التعديلات
موقع الـ save() بعد أن تم الانتهاء من جميع التعديلات، ولكن قبل Presentation يخرج من نطاقها.
#include <Aspose/Slides/Foss/presentation.h>
int main() {
namespace asf = Aspose::Slides::Foss;
asf::Presentation prs;
auto& slide = prs.slides()[0];
auto& shape = slide.shapes().add_auto_shape(
asf::ShapeType::RECTANGLE, 50, 50, 300, 100);
shape.text_frame()->set_text("Hello, World!");
prs.save("output.pptx", asf::SaveFormat::PPTX);
return 0;
}الخطوة 4: حفظها في مسار مختلف
اجتياز مسار إخراج مختلف لإنشاء ملف جديد دون تعديل الأصلي:
asf::Presentation prs("template.pptx");
// modify ...
prs.save("customized.pptx", asf::SaveFormat::PPTX);وَالْمُتَّقِينَ template.pptx لا يتم تعديل الملفات.; customized.pptx (وَإِنْ كُنَّا مُرْسِلِينَ فَمَا جَاءَهُمْ) أي إن كانوا قد خلقوا.
الخطوة الخامسة: تحقق من النتيجة.
بعد حفظ الملف، تحقق من وجوده:
#include <filesystem>
#include <iostream>
auto output = std::filesystem::path("output.pptx");
std::cout << "Saved: " << std::filesystem::exists(output)
<< ", size: " << std::filesystem::file_size(output) << " bytes\n";دعم النموذج المحفوظة
| شكل | قيمة Enum | دعم |
|---|---|---|
| PPTX (Office Open XML) - مكتب مفتوح XML | SaveFormat::PPTX | نعم |
| N/A | لا | |
| HTML | N/A | لا |
| SVG | N/A | لا |
| PNG / JPEG | N/A | لا |
| ODP (أوراق النشر المفتوحة) | N/A | لا |
يتم دعم PPTX فقط.الحاجة إلى حفظ في أي تنسيق آخر سوف يلقي استثناء.
مشكلات و تصحيحات مشتركة
إلغاء خطأ في الكتابة
يتم فتح ملف الناتج في تطبيق آخر (على سبيل المثال، يحتوي PowerPoint على الملف مفتوح).
يتم إنشاء الملف ولكن يبدو فارغا أو مكسورة
ضمان prs.save() وسميت قبل أن يُدعى Presentation بعد التدمير ، يتم إطلاق الولاية الداخلية وسيتم فشل المكالمات اللاحقة أو تنتج نفاذًا غير صحيح.
استثناء عند توفير
هذا يحدث عند محاولة تنسيق حفظ غير PPTX، أو عند استخدام ميزة غير مدعومة (مثل الرسوم البيانية أو الرؤى) أثناء حفظ.
الأسئلة المتكررة
هل يمكنني حفظ الملفات التي قمت بفتحها؟?
نعم.التوفير في نفس المسار يبالغ في كتابة الملف الأصلي:
asf::Presentation prs("deck.pptx");
// modify ...
prs.save("deck.pptx", asf::SaveFormat::PPTX); // overwrites original
هل يمكنني حفظها في حافلة الذاكرة بدلاً من ملف؟?
وتوفيرها مباشرة إلى A std::vector<uint8_t> أو std::ostream لا يدعم في API الحالي. حفظ إلى ملف مؤقت وقراءة البايتات:
#include <filesystem>
#include <fstream>
#include <vector>
auto tmp = std::filesystem::temp_directory_path() / "temp.pptx";
prs.save(tmp.string(), asf::SaveFormat::PPTX);
std::ifstream in(tmp, std::ios::binary);
std::vector<uint8_t> bytes((std::istreambuf_iterator<char>(in)),
std::istreambuf_iterator<char>());
std::filesystem::remove(tmp);هل يحتفظ الادخار بالمحتوى الذي لم أعده؟?
نعم، يتم الحفاظ على أجزاء XML غير معروفة من الملف الأصلي في التوراة.المكتبة تصف فقط أطراف نموذج المستند الذي يفهمه، وتمر عبر أي XML التي لا يعرفها.