C++ में प्रस्तुतियों को लोड करने का तरीका

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 भागों को जैसा है वैसा ही संरक्षित किया जाता है: लाइब्रेरी कभी भी ऐसी सामग्री नहीं हटाती जिसे वह अभी तक समझ नहीं पाती।.


चरण 3: स्लाइड्स की जाँच करें

सभी स्लाइड्स पर इटररेट करें और उनके शैप काउंट को प्रिंट करें:

#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 (binary PowerPoint 97-2003) फ़ाइलें समर्थित नहीं हैं।.

आकार में कोई text_frame नहीं है

कुछ शेप्स (Connectors, PictureFrames, GroupShapes) के पास टेक्स्ट फ्रेम नहीं होता। इसके साथ गार्ड करें shape.has_text_frame() टेक्स्ट तक पहुँचने से पहले।.


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

क्या लोड करने से सभी मूल सामग्री संरक्षित रहती है?

हां। अज्ञात XML भागों को राउंड‑ट्रिप सहेजने पर वैरbatim संरक्षित रखा जाता है। लाइब्रेरी केवल दस्तावेज़ मॉडल के उन भागों को सीरियलाइज़ करती है जिन्हें वह समझती है, और किसी भी अपरिचित XML को 그대로 पास कर देती है।.

क्या मैं पासवर्ड‑सुरक्षित PPTX लोड कर सकता हूँ?

पासवर्ड‑सुरक्षित (एन्क्रिप्टेड) प्रस्तुतियों को इस संस्करण में समर्थन नहीं दिया गया है।.

क्या मैं एम्बेडेड इमेजेज़ निकाल सकता हूँ?

इमेजेज कलेक्शन तक पहुँचें: prs.images() वापस देता है ImageCollection. प्रत्येक इमेज में एक width(), height(), और binary_data() raw image data पढ़ने की विधि।.

क्या इन‑मेमोरी बफ़र से लोड करना समर्थित है?

एक से लोड करना std::vector<uint8_t> या std::istream वर्तमान API में उजागर नहीं है। पहले bytes को एक temporary file में लिखें, फिर path को पास करें Presentation constructor।.


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

 हिन्दी