C++ में प्रस्तुतियों को कैसे सहेजें

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;
}

चरण 3: सभी संशोधनों के बाद सहेजें

रखें 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 बनाया जाता है (या यदि यह पहले से मौजूद है तो ओवरराइट किया जाता है)।.


चरण 5: आउटपुट की पुष्टि करें

सहेजने के बाद, जांचें कि फ़ाइल मौजूद है:

#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";

समर्थित सहेजने का फ़ॉर्मेट

फ़ॉर्मेटएनम मानसमर्थित
PPTX (Office Open XML)SaveFormat::PPTXहाँ
PDFN/Aनहीं
HTMLN/Aनहीं
SVGN/Aनहीं
PNG / JPEGN/Aनहीं
ODP (OpenDocument)N/Aनहीं

केवल PPTX समर्थित है। किसी अन्य फ़ॉर्मेट में सहेजने का प्रयास करने पर एक अपवाद फेंका जाएगा।.


सामान्य समस्याएँ और समाधान

लिखते समय अनुमति अस्वीकृत त्रुटि

आउटपुट फ़ाइल किसी अन्य एप्लिकेशन में खुली है (उदाहरण के लिए, PowerPoint में फ़ाइल खुली है)। सहेजने से पहले अन्य एप्लिकेशन में फ़ाइल को बंद करें।.

फ़ाइल बनाई गई है लेकिन खाली या भ्रष्ट दिखती है

सुनिश्चित करें prs.save() को पहले कॉल किया जाना चाहिए Presentation ऑब्जेक्ट नष्ट हो जाता है। नष्ट होने के बाद, आंतरिक स्थिति रिलीज़ हो जाती है और बाद के कॉल विफल हो जाएंगे या अमान्य आउटपुट उत्पन्न करेंगे।.

सहेजते समय अपवाद

यह तब होता है जब PPTX के अलावा किसी अन्य सहेजने के फ़ॉर्मेट का प्रयास किया जाता है, या सहेजते समय असमर्थित सुविधा (जैसे चार्ट या एनीमेशन) का उपयोग किया जाता है।.


अक्सर पूछे जाने वाले प्रश्न

क्या मैं उसी फ़ाइल में सहेज सकता हूँ जिसे मैंने खोला था?

हाँ। उसी पथ में सहेजने से मूल फ़ाइल ओवरराइट हो जाती है:

asf::Presentation prs("deck.pptx");
// modify ...
prs.save("deck.pptx", asf::SaveFormat::PPTX); // overwrites original

क्या मैं फ़ाइल के बजाय मेमोरी बफ़र में सहेज सकता हूँ?

सीधे एक में सहेजना 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 को वैसे ही पास कर देती है।.


संबंधित देखें

 हिन्दी