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

परिचय

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

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

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

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

// Presentation क्लास को इंस्टैंशिएट करें और कन्स्ट्रक्टर में फ़ाइल पथ पास करें।
$presentation = new Presentation("Sample.pptx");
try {
    // प्रस्तुति में कुल स्लाइड्स की संख्या प्रिंट करें।
    echo($presentation->getSlides()->size());
} finally {
    $presentation->dispose();
}

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

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

$loadOptions = new LoadOptions();
$loadOptions->setPassword("YOUR_PASSWORD");

$presentation = new Presentation("Sample.pptx", $loadOptions);
try {
    // डिक्रिप्टेड प्रस्तुति पर संचालन करें।
} finally {
    $presentation->dispose();
}

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

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

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

$loadOptions = new LoadOptions();
// KeepLocked व्यवहार चुनें—प्रेज़ेंटेशन फ़ाइल जीवनकाल के दौरान लॉक रहेगी
// प्रेज़ेंटेशन इंस्टेंस के लिए, लेकिन इसे मेमोरी में लोड करने या अस्थायी फ़ाइल में कॉपी करने की ज़रूरत नहीं है।
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB

$presentation = new Presentation($filePath, $loadOptions);
try {
    // बड़ी प्रस्तुति लोड हो गई है और उपयोग की जा सकती है, जबकि मेमोरी उपयोग कम रहता है।

    // प्रेज़ेंटेशन में बदलाव करें।
    $presentation->getSlides()->get_Item(0)->setName("Very large presentation");

    // प्रेज़ेंटेशन को अन्य फ़ाइल में सहेजें। इस ऑपरेशन के दौरान मेमोरी उपयोग कम रहता है।
    $presentation->save("LargePresentation-copy.pptx", SaveFormat::Pptx);
	
	// ऐसा न करें! I/O अपवाद फेंका जाएगा क्योंकि फ़ाइल तब तक लॉक रहती है जब तक प्रेज़ेंटेशन ऑब्जेक्ट डिस्पोज़ नहीं हो जाता।
	//unlink($filePath);
} finally {
    $presentation->dispose();
}
// यहाँ इसे करना ठीक है। स्रोत फ़ाइल अब प्रेज़ेंटेशन ऑब्जेक्ट द्वारा लॉक नहीं है।
unlink($filePath);

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

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

class ImageLoadingHandler {
    function resourceLoading($args) {
        if (java_values($args->getOriginalUri()->endsWith(".jpg"))) {
            // एक वैकल्पिक इमेज लोड करें।
			$bytes = file_get_contents("aspose-logo.jpg");
			$javaByteArray = java_values($bytes);
            $args->setData($javaByteArray);
            return ResourceLoadingAction::UserProvided;
        } else if (java_values($args->getOriginalUri()->endsWith(".png"))) {
            // एक वैकल्पिक URL सेट करें।
            $args->setUri("http://www.google.com/images/logos/ps_logo2.png");
            return ResourceLoadingAction::Default;
        }
        // अन्य सभी इमेज को छोड़ें।
        return ResourceLoadingAction::Skip;
    }
}

$loadingHandler = java_closure(new ImageLoadingHandler(), null, java("com.aspose.slides.IResourceLoadingCallback"));

$loadOptions = new LoadOptions();
$loadOptions->setResourceLoadingCallback($loadingHandler);

$presentation = new Presentation("Sample.pptx", $loadOptions);

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

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

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

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

$loadOptions = new LoadOptions();
$loadOptions->setDeleteEmbeddedBinaryObjects(true);

$presentation = new Presentation("malware.ppt", $loadOptions);
try {
    // प्रेज़ेंटेशन पर संचालन करें।
} finally {
    $presentation->dispose();
}

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

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

यदि खोलते समय आवश्यक फ़ॉन्ट गायब हों तो क्या होता है?
फ़ाइल खुल जाएगी, लेकिन बाद में rendering/export फ़ॉन्ट प्रतिस्थापित कर सकता है। रन‑टाइम वातावरण में फ़ॉन्ट प्रतिस्थापन को कॉन्फ़िगर करें या आवश्यक फ़ॉन्ट जोड़ें

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