C++ में प्रस्तुतियों को खोलें

परिचय

शुरुआत से PowerPoint प्रस्तुतियाँ बनाने के अलावा, Aspose.Slides आपको मौजूदा प्रस्तुतियों को खोलने की भी अनुमति देता है। एक प्रस्तुति लोड करने के बाद, आप उसके बारे में जानकारी प्राप्त कर सकते हैं, स्लाइड सामग्री को संपादित कर सकते हैं, नई स्लाइडें जोड़ सकते हैं, मौजूदा स्लाइडें हटा सकते हैं, और भी बहुत कुछ।

प्रस्तुतियों को खोलें

किसी मौजूदा प्रस्तुति को खोलने के लिए, Presentation क्लास का एक उदाहरण बनाएं और उसके कन्स्ट्रक्टर को फ़ाइल पथ पास करें।

निम्नलिखित C++ उदाहरण दर्शाता है कि प्रस्तुति कैसे खोली जाए और उसकी स्लाइड गिनती कैसे प्राप्त की जाए:

// Presentation क्लास का उदाहरण बनाएं और उसके कन्स्ट्रक्टर में फ़ाइल पथ पास करें।
auto presentation = MakeObject<Presentation>(u"Sample.pptx");

// प्रस्तुति में कुल स्लाइडों की संख्या प्रिंट करें।
Console::WriteLine(presentation->get_Slides()->get_Count());

presentation->Dispose();

पासवर्ड-संरक्षित प्रस्तुतियों को खोलें

जब आपको पासवर्ड-संरक्षित प्रस्तुति खोलनी हो, तो इसे डिक्रिप्ट और लोड करने के लिए पासवर्ड को LoadOptions क्लास की set_Password मेथड के माध्यम से पास करें। निम्नलिखित C++ कोड इस संचालन को दर्शाता है:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_Password(u"YOUR_PASSWORD");

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);
    
    // डिक्रिप्टेड प्रस्तुति पर कार्य करें।

presentation->Dispose();

बड़ी प्रस्तुतियों को खोलें

Aspose.Slides विकल्प प्रदान करता है—विशेष रूप से LoadOptions क्लास में get_BlobManagementOptions मेथड—जो बड़े प्रस्तुतियों को लोड करने में आपकी मदद करता है।

निम्नलिखित C++ कोड बड़े प्रस्तुति को लोड करने को प्रदर्शित करता है (उदाहरण के लिए, 2 GB):

auto filePath = u"LargePresentation.pptx";

auto loadOptions = MakeObject<LoadOptions>();
// KeepLocked व्यवहार चुनें—प्रेज़ेंटेशन फ़ाइल जीवनकाल तक लॉक रहेगी
// प्रेज़ेंटेशन इंस्टेंस, लेकिन इसे मेमोरी में लोड करने या अस्थायी फ़ाइल में कॉपी करने की आवश्यकता नहीं है।
loadOptions->get_BlobManagementOptions()->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
loadOptions->get_BlobManagementOptions()->set_IsTemporaryFilesAllowed(true);
loadOptions->get_BlobManagementOptions()->set_MaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

auto presentation = MakeObject<Presentation>(filePath, loadOptions);

// बड़ी प्रेज़ेंटेशन लोड हो गई है और उपयोग की जा सकती है, जबकि मेमोरी उपयोग कम रहता है.

// प्रेज़ेंटेशन में बदलाव करें।
presentation->get_Slide(0)->set_Name(u"Large presentation");

// प्रेज़ेंटेशन को किसी अन्य फ़ाइल में सहेजें। इस ऑपरेशन के दौरान मेमोरी उपयोग कम रहता है।
presentation->Save(u"LargePresentation-copy.pptx", SaveFormat::Pptx);

// यह न करें! एक I/O अपवाद फेंका जाएगा क्योंकि फ़ाइल तब तक लॉक रहती है जब तक प्रेज़ेंटेशन ऑब्जेक्ट डिस्पोज़ नहीं हो जाता।
File::Delete(filePath);

presentation->Dispose();

// यहाँ करने में कोई समस्या नहीं है। स्रोत फ़ाइल अब प्रेज़ेंटेशन ऑब्जेक्ट द्वारा लॉक नहीं रह गई है।
File::Delete(filePath);

बाह्य संसाधनों को नियंत्रित करें

Aspose.Slides वह IResourceLoadingCallback इंटरफ़ेस प्रदान करता है जो आपको बाहरी संसाधनों को प्रबंधित करने देता है। निम्नलिखित C++ कोड दर्शाता है कि IResourceLoadingCallback इंटरफ़ेस का कैसे उपयोग किया जाए:

class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
    ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
    {
        if (args->get_OriginalUri().EndsWith(u".jpg"))
        {
            try
            {
                // प्रतिस्थापित छवि लोड करें।
                auto imageData = File::ReadAllBytes(u"aspose-logo.jpg");
                args->SetData(imageData);
                return ResourceLoadingAction::UserProvided;
            }
            catch (Exception&)
            {
                return ResourceLoadingAction::Skip;
            }
        }
        else if (args->get_OriginalUri().EndsWith(u".png"))
        {
            // प्रतिस्थापित URL सेट करें।
            args->set_Uri(u"http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }

        // सभी अन्य छवियों को छोड़ें।
        return ResourceLoadingAction::Skip;
    }
};
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_ResourceLoadingCallback(MakeObject<ImageLoadingHandler>());

auto presentation = MakeObject<Presentation>(u"Sample.pptx", loadOptions);

बिना एम्बेडेड बाइनरी ऑब्जेक्ट्स के प्रस्तुतियों को लोड करें

एक PowerPoint प्रस्तुति में निम्न प्रकार के एम्बेडेड बाइनरी ऑब्जेक्ट्स हो सकते हैं:

  • VBA प्रोजेक्ट (जिसे IPresentation::get_VbaProject के माध्यम से पहुँचा जा सकता है);
  • OLE ऑब्जेक्ट एम्बेडेड डेटा (जिसे IOleEmbeddedDataInfo::get_EmbeddedFileData के माध्यम से पहुँचा जा सकता है);
  • ActiveX कंट्रोल बाइनरी डेटा (जिसे IControl::get_ActiveXControlBinary के माध्यम से पहुँचा जा सकता है)।

ILoadOptions::set_DeleteEmbeddedBinaryObjects मेथड का उपयोग करके, आप प्रस्तुति को बिना किसी एम्बेडेड बाइनरी ऑब्जेक्ट के लोड कर सकते हैं।

यह मेथड संभावित दुर्भावनापूर्ण बाइनरी सामग्री को हटाने के लिए उपयोगी है। निम्नलिखित C++ कोड दिखाता है कि कैसे प्रस्तुति को बिना किसी एम्बेडेड बाइनरी सामग्री के लोड किया जाए:

auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_DeleteEmbeddedBinaryObjects(true);

auto presentation = MakeObject<Presentation>(u"malware.ppt", loadOptions);

// Perform operations on the presentation.

presentation->Dispose();

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

मैं कैसे पता कर सकता हूँ कि फ़ाइल भ्रष्ट है और नहीं खुल रही है?

लोडिंग के दौरान आपको पार्सिंग/फ़ॉर्मेट वैलिडेशन अपवाद मिलेगा। ऐसे त्रुटियों में अक्सर अमान्य ZIP संरचना या टूटे हुए PowerPoint रिकॉर्ड का उल्लेख होता है।

यदि खोलते समय आवश्यक फ़ॉन्ट्स गायब हों तो क्या होता है?

फ़ाइल खुल जाएगी, लेकिन बाद में rendering/export फ़ॉन्ट्स को प्रतिस्थापित कर सकता है। रनटाइम पर्यावरण में Configure font substitutions या add the required fonts जोड़ें।

खोलते समय एम्बेडेड मीडिया (वीडियो/ऑडियो) के बारे में क्या?

वे प्रस्तुति संसाधनों के रूप में उपलब्ध हो जाते हैं। यदि मीडिया बाहरी पथों के माध्यम से संदर्भित हैं, तो सुनिश्चित करें कि ये पथ आपके पर्यावरण में उपलब्ध हों; अन्यथा rendering/export मीडिया को छोड़ सकता है।