PHP में मूल प्रस्तुति फ़ॉर्मेट निर्धारित करें
अवलोकन
एक प्रस्तुति लोड करने के बाद, उसके मूल प्रारूप को निर्धारित करने के लिए Presentation::getSourceFormat मेथड को कॉल करें। इसका उपयोग तब करें जब बाद की प्रक्रिया इस बात पर निर्भर करती है कि वर्तमान इंस्टेंस किस प्रारूप से लोड किया गया था।
SourceFormat वह प्रारूप है जो आउटपुट फ़ाइल के लिए चयनित SaveFormat से अलग होता है। किसी अन्य फ़ॉर्मेट में सहेजने से मौजूदा इंस्टेंस का स्रोत फ़ॉर्मेट नहीं बदलता।
फ़ाइल की स्रोत प्रारूप पढ़ें
यह उदाहरण एक मौजूदा sample.pptx फ़ाइल की आवश्यकता रखता है। यह फ़ाइल को लोड करता है और फ़ाइल नाम के बजाय Presentation::getSourceFormat का उपयोग करके एप्लिकेशन प्रोसेसिंग नीति चुनता है। अन्य फ़ॉर्मेट आज़माने के लिये इनपुट पाथ बदलें। उदाहरण चयनित नीति को प्रिंट करता है; अपने एप्लिकेशन लॉजिक के साथ संदेश बदलें।
use aspose\slides\Presentation;
use aspose\slides\SourceFormat;
$presentation = new Presentation("sample.pptx");
try {
switch (java_values($presentation->getSourceFormat())) {
case SourceFormat::Ppt:
case SourceFormat::Pps:
case SourceFormat::Pot:
echo "Use the legacy PowerPoint processing policy." . PHP_EOL;
break;
case SourceFormat::Pptx:
echo "Use the standard PPTX processing policy." . PHP_EOL;
break;
default:
echo "Use the general policy for source format " . java_values($presentation->getSourceFormat()) . "." . PHP_EOL;
break;
}
} finally {
$presentation->dispose();
}
समर्थित मानों की पहचान करें
SourceFormat क्लास पूर्णांक स्थिरांक निर्धारित करती है जो नीचे दिए गए प्रस्तुति फ़ॉर्मेट को अलग करते हैं। नीचे दिखाए गए एक्सटेंशन पारंपरिक एक्सटेंशन हैं, मूल फ़ाइल नाम का पुनर्निर्माण नहीं हैं।
| SourceFormat मान | एक्सटेंशन | फ़ॉर्मेट |
|---|---|---|
Ppt |
.ppt |
PowerPoint 97–2003 प्रस्तुति |
Pptx |
.pptx |
Office Open XML प्रस्तुति |
Pptm |
.pptm |
मैक्रो‑सक्षम Office Open XML प्रस्तुति |
Pps |
.pps |
PowerPoint 97–2003 स्लाइड शो |
Ppsx |
.ppsx |
Office Open XML स्लाइड शो |
Ppsm |
.ppsm |
मैक्रो‑सक्षम Office Open XML स्लाइड शो |
Pot |
.pot |
PowerPoint 97–2003 टेम्पलेट |
Potx |
.potx |
Office Open XML टेम्पलेट |
Potm |
.potm |
मैक्रो‑सक्षम Office Open XML टेम्पलेट |
Odp |
.odp |
OpenDocument प्रस्तुति |
Otp |
.otp |
OpenDocument प्रस्तुति टेम्पलेट |
Fodp |
.fodp |
Flat XML ODF प्रस्तुति |
Xml |
.xml |
PowerPoint XML प्रस्तुति |
स्ट्रीम की स्रोत प्रारूप पढ़ें
यह उदाहरण एक मौजूदा sample.pps फ़ाइल की आवश्यकता रखता है। इसके बाइट्स को मेमोरी स्ट्रीम में पढ़ना ऐसे इनपुट का मॉडल बनाता है जिसमें फ़ाइल नाम नहीं होता, जैसे डेटाबेस मान या अपलोड किया गया बाइट एरे। Presentation कंस्ट्रक्टर केवल स्ट्रीम प्राप्त करता है।
use aspose\slides\Presentation;
$inputFile = new Java("java.io.File", "sample.pps");
$bytes = java("java.nio.file.Files")->readAllBytes($inputFile->toPath());
$stream = new Java("java.io.ByteArrayInputStream", $bytes);
try {
$presentation = new Presentation($stream);
try {
echo "Source format: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
} finally {
$presentation->dispose();
}
} finally {
$stream->close();
}
PPT, PPS और POT एक ही बाइनरी फ़ॉर्मेट का उपयोग करते हैं। फ़ाइल पाथ से लोड करने पर एक्सटेंशन स्लाइड शो या टेम्पलेट को अलग करने में मदद कर सकता है। फ़ाइल नाम के बिना, लिगेसी PPS और POT सामग्री को SourceFormat::Ppt के रूप में रिपोर्ट किया जा सकता है; ऊपर दिया गया PPS उदाहरण SourceFormat::Ppt का पूर्णांक मान प्रिंट करता है।
यदि आपके एप्लिकेशन को यह अंतर बनाए रखना आवश्यक है, तो मूल फ़ाइल नाम या उपप्रकार मेटाडेटा को अलग से रखें। इन लिगेसी उपप्रकारों के लिये एक्सटेंशन एक उपयोगी संकेत है, लेकिन इसे केवल आधार नहीं बनाना चाहिए।
लोड करने से पहले और बाद में पहचान की तुलना करें
फ़ाइल को पूरी प्रस्तुति ऑब्जेक्ट मॉडल में लोड करने से पहले निरीक्षण करने हेतु PresentationFactory::getPresentationInfo और PresentationInfo::getLoadFormat का उपयोग करें। जब इंस्टेंस पहले से मौजूद हो तो Presentation::getSourceFormat उपयोग करें।
यह उदाहरण sample.pptx की आवश्यकता रखता है और क्रमशः LoadFormat::Pptx तथा SourceFormat::Pptx के पूर्णांक मान प्रिंट करता है। प्रोडक्शन में, अपने प्रोसेसिंग स्टेज के अनुसार उपयुक्त API चुनें; पहले से लोड किया गया प्रस्तुति स्रोत फ़ॉर्मेट प्राप्त करने के लिये अतिरिक्त निरीक्षण की आवश्यकता नहीं है।
use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;
$path = "sample.pptx";
$information = PresentationFactory::getInstance()->getPresentationInfo($path);
echo "Before loading: " . java_values($information->getLoadFormat()) . PHP_EOL;
$presentation = new Presentation($path);
try {
echo "After loading: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
} finally {
$presentation->dispose();
}
परिणाम विभिन्न क्लासों से स्थिरांक उपयोग करते हैं: LoadFormat और SourceFormat। उनके संख्यात्मक मानों की तुलना न करें या यह न मानें कि प्रत्येक फ़ॉर्मेट के पास समान पहचान परिणाम हैं। PowerPoint XML को लोड करने से पहले LoadFormat::Unknown और लोड करने के बाद SourceFormat::Xml के रूप में रिपोर्ट किया जा सकता है।
स्रोत और आउटपुट फ़ॉर्मेट को अलग रखें
यह उदाहरण sample.pptx की आवश्यकता रखता है और converted.odp लिखता है। यह मूल इंस्टेंस को सहेजने से पहले और बाद दोनों में SourceFormat::Pptx का पूर्णांक मान प्रिंट करता है। केवल ODP आउटपुट से लोड किया गया नया इंस्टेंस Odp रिपोर्ट करता है।
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("sample.pptx");
try {
echo "Before saving: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
$presentation->save("converted.odp", SaveFormat::Odp);
echo "After saving: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
$reopened = new Presentation("converted.odp");
try {
echo "Reopened output: " . java_values($reopened->getSourceFormat()) . PHP_EOL;
} finally {
$reopened->dispose();
}
} finally {
$presentation->dispose();
}
new Presentation() से शून्य से बनाई गई प्रस्तुति SourceFormat::Pptx रिपोर्ट करती है। इसका कोई इनपुट फ़ाइल नहीं होता: यह नव निर्मित इंस्टेंस का डिफ़ॉल्ट मान है, यह संकेत नहीं है कि PPTX फ़ाइल लोड हुई है। यदि यह अंतर महत्वपूर्ण है तो अपने एप्लिकेशन में यह ट्रैक रखें कि इंस्टेंस बनाया गया या लोड किया गया।
स्रोत फ़ॉर्मेट को एक्सटेंशन में मैप करें
निम्नलिखित उदाहरण को sample.pptx की आवश्यकता है। यह प्रत्येक वर्तमान में समर्थित SourceFormat मान को पारंपरिक एक्सटेंशन में मैप करता है, बिना इनपुट फ़ाइल नाम को पार्स किए। फ़ॉलबैक अनपहचाने मान के लिये अनजाने में एक्सटेंशन असाइन करने से बचाता है।
use aspose\slides\Presentation;
use aspose\slides\SourceFormat;
$presentation = new Presentation("sample.pptx");
try {
$extension = null;
switch (java_values($presentation->getSourceFormat())) {
case SourceFormat::Ppt:
$extension = ".ppt";
break;
case SourceFormat::Pptx:
$extension = ".pptx";
break;
case SourceFormat::Pptm:
$extension = ".pptm";
break;
case SourceFormat::Pps:
$extension = ".pps";
break;
case SourceFormat::Ppsx:
$extension = ".ppsx";
break;
case SourceFormat::Ppsm:
$extension = ".ppsm";
break;
case SourceFormat::Pot:
$extension = ".pot";
break;
case SourceFormat::Potx:
$extension = ".potx";
break;
case SourceFormat::Potm:
$extension = ".potm";
break;
case SourceFormat::Odp:
$extension = ".odp";
break;
case SourceFormat::Otp:
$extension = ".otp";
break;
case SourceFormat::Fodp:
$extension = ".fodp";
break;
case SourceFormat::Xml:
$extension = ".xml";
break;
default:
$extension = null;
break;
}
echo ($extension !== null ? $extension : "No extension mapping is available.") . PHP_EOL;
} finally {
$presentation->dispose();
}
यह मैपिंग फ़ाइल को परिवर्तित नहीं करती या स्ट्रीम लोडिंग के दौरान खोए हुए लिगेसी PPS/POT उपप्रकार को पुनर्प्राप्त नहीं करती। वास्तविक सहेजने के लिये स्पष्ट रूप से SaveFormat चुनें, या Save Presentations in Their Original Format में दिखाए गए रूपांतरण का उपयोग करें।
सेव और पुनः खोलकर फ़ॉर्मेट की पुष्टि करें
यह स्वतंत्र उदाहरण एक प्रस्तुति बनाता है और कार्य निर्देशिका में तीन फ़ाइलें लिखता है, समान नाम वाली फ़ाइलों को ओवरराइट करता है। यह प्रत्येक आउटपुट को पाथ तथा मेमोरी स्ट्रीम दोनों से पुनः खोलता है। PPTX और ODP के लिये, दोनों मार्ग सहेजे गए फ़ॉर्मेट को रिपोर्ट करते हैं। PPS के लिये, पाथ से लोड करने पर Pps रिपोर्ट होता है, जबकि फ़ाइल नाम के बिना समान बाइट्स लोड करने पर Ppt रिपोर्ट होता है।
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
$formats = [SaveFormat::Pptx, SaveFormat::Odp, SaveFormat::Pps];
$extensions = ["pptx", "odp", "pps"];
foreach ($formats as $index => $format) {
$path = "roundtrip." . $extensions[$index];
$presentation->save($path, $format);
$fromFile = new Presentation($path);
try {
$inputFile = new Java("java.io.File", $path);
$bytes = java("java.nio.file.Files")->readAllBytes($inputFile->toPath());
$stream = new Java("java.io.ByteArrayInputStream", $bytes);
try {
$fromStream = new Presentation($stream);
try {
echo $extensions[$index] . ": file=" . java_values($fromFile->getSourceFormat()) . ", stream=" . java_values($fromStream->getSourceFormat()) . PHP_EOL;
} finally {
$fromStream->dispose();
}
} finally {
$stream->close();
}
} finally {
$fromFile->dispose();
}
}
} finally {
$presentation->dispose();
}
निम्न तालिका मिलते-जुलते एक्सटेंशन वाली प्रस्तुतियों के स्रोत‑फ़ॉर्मेट पहचान को संक्षेप में दर्शाती है। नामों में स्थिरांक दर्शाए गए हैं; PHP उदाहरण उनके पूर्णांक मान प्रिंट करते हैं:
| सहेजा गया फ़ॉर्मेट | फ़ाइल पाथ से SourceFormat | नामरहित स्ट्रीम से SourceFormat |
|---|---|---|
| PPT | Ppt |
Ppt |
| PPTX, PPTM | Pptx, Pptm क्रमशः |
फ़ाइल पाथ समान |
| PPS | Pps |
Ppt |
| PPSX, PPSM | Ppsx, Ppsm क्रमशः |
फ़ाइल पाथ समान |
| POT | Pot |
Ppt |
| POTX, POTM | Potx, Potm क्रमशः |
फ़ाइल पाथ समान |
| ODP, OTP | Odp, Otp क्रमशः |
फ़ाइल पाथ समान |
| FODP | Fodp |
Fodp |
| PowerPoint XML | Xml |
Xml |
PPS/POT सामग्री को नामरहित स्ट्रीम के लिये Ppt के रूप में पहचाना जाता है। तालिका फ़ॉर्मेट पहचान को दर्शाती है, न कि रूपांतरण के दौरान प्रत्येक प्रस्तुति फीचर के संरक्षण को।
अक्सर पूछे जाने वाले प्रश्न
ODP में सहेजने से PPTX से लोड किए गए प्रस्तुति का स्रोत फ़ॉर्मेट बदलता है क्या?
नहीं। मौजूदा इंस्टेंस अभी भी Pptx रिपोर्ट करता है। सहेजे गए ODP फ़ाइल से लोड किया गया इंस्टेंस Odp रिपोर्ट करता है।
क्या स्ट्रीम हमेशा लिगेसी प्रस्तुति, स्लाइड शो और टेम्पलेट को अलग पहचान सकता है?
नहीं। PPT, PPS और POT समान बाइनरी फ़ॉर्मेट साझा करते हैं। जब यह अंतर आवश्यक हो तो फ़ाइल नाम या उपप्रकार मेटाडेटा को अलग से रखें।
यदि प्रस्तुति पहले से लोड हो चुकी है तो कौन सा API उपयोग करना चाहिए?
Presentation::getSourceFormat पढ़ें। लोड करने से पहले निरीक्षण के लिये PresentationFactory::getPresentationInfo का उपयोग करें।