Python via Java में प्रस्तुतियों को सहेजें

परिचय

एक प्रस्तुति बनाने या एक मौजूदा प्रस्तुति खोलें के बाद, परिणाम लिखने के लिए Presentation.save मेथड का उपयोग करें। Aspose.Slides for Python via Java एक प्रस्तुति को फ़ाइल या स्ट्रीम में PowerPoint, OpenDocument, PDF, और अन्य फॉर्मेट्स में सहेज सकता है। निम्नलिखित अनुभाग मानक सहेजने की क्रियाओं और PPTX आउटपुट के लिए उपलब्ध विकल्पों को कवर करते हैं।

फ़ाइलों में प्रस्तुतिकरण सहेजें

एक प्रस्तुति को फ़ाइल में सहेजने के लिए, आउटपुट पथ और एक SaveFormat मान को Presentation.save मेथड को पास करें। फ़ॉर्मेट मान निर्धारित करता है कि Aspose.Slides कौन सी फ़ाइल प्रकार बनाएगा।

निम्न उदाहरण एक प्रस्तुति बनाता है और उसे PPTX फ़ाइल के रूप में सहेजता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # प्रेज़ेंटेशन सामग्री यहाँ जोड़ें या संशोधित करें।

    presentation.save("Output.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

प्रस्तुति को उनके मूल फॉर्मेट में सहेजें

फ़ाइल और स्ट्रीम पहचान उदाहरणों, नवीन उत्पन्न प्रस्तुतियों के व्यवहार, और स्रोत व आउटपुट फॉर्मेट के अंतर के लिए देखें Determine the Original Presentation Format।

बैच‑प्रोसेसिंग एप्लिकेशन में इनपुट फ़ॉर्मेट पहले से ज्ञात नहीं हो सकता। फ़ाइल लोड करने के बाद, मूल फ़ॉर्मेट को Presentation.getSourceFormat मेथड से पढ़ें। प्राप्त SourceFormat मान को SlideUtil.toSaveFormat को पास करें ताकि संबंधित SaveFormat मान प्राप्त हो, फिर संशोधित प्रस्तुति को लिखने के लिए Presentation.save का उपयोग करें।

निम्न पूर्ण उदाहरण एक इनपुट डायरेक्टरी में प्रत्येक फ़ाइल को प्रोसेस करता है, उसका शीर्षक अपडेट करता है, और उसे उसी फ़ॉर्मेट में आउटपुट डायरेक्टरी में सहेजता है जिससे वह लोड किया गया था:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SlideUtil
from pathlib import Path

IllegalArgumentException = jpype.JClass("java.lang.IllegalArgumentException")
input_directory = Path("Input")
output_directory = Path("Output")

try:
    output_directory.mkdir(parents=True, exist_ok=True)
except OSError:
    print("Cannot create the output directory.")

if input_directory.is_dir() and output_directory.is_dir():
    for input_file in input_directory.iterdir():
        if input_file.is_file():
            try:
                presentation = Presentation(str(input_file))
                try:
                    save_format = SlideUtil.toSaveFormat(presentation.getSourceFormat())
                    presentation.getDocumentProperties().setTitle("Processed by the batch application")

                    output_file = output_directory / input_file.name
                    presentation.save(str(output_file), save_format)
                finally:
                    presentation.dispose()
            except IllegalArgumentException as exception:
                print(f"Cannot map the source format of '{input_file}': {exception}")
            except Exception as exception:
                print(f"Cannot process '{input_file}': {exception}")

SlideUtil.toSaveFormat PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP, और PowerPoint XML को उनके संबंधित प्रस्तुति सहेजने के फ़ॉर्मेट्स से मैप करता है। यह केवल प्रस्तुति स्रोत फ़ॉर्मेट्स को मैप करता है; यह PDF, HTML, TIFF, या इमेज जैसे निर्यात फ़ॉर्मेट्स को चुनने के लिये नहीं है। असमर्थित या अवैध SourceFormat मान पास करने से एक IllegalArgumentException उत्पन्न होता है।

Legacy PPT, PPS, और POT फ़ाइलें समान बाइनरी कंटेनर का उपयोग करती हैं। जब ऐसी प्रस्तुति को फ़ाइल एक्सटेंशन के बिना स्ट्रीम से लोड किया जाता है, तो एक PPS या POT फ़ाइल को PPT के रूप में पहचाना जा सकता है। यदि इन लेगेसी उपप्रकारों को संरक्षित करना आवश्यक है, तो मूल फ़ाइलनाम या फ़ॉर्मेट मेटाडाटा को अलग से रखें और आउटपुट फ़ाइलनाम व फ़ॉर्मेट चुनते समय उसका उपयोग करें।

स्ट्रीम में प्रस्तुतिकरण सहेजें

एक प्रस्तुति को अंतिम फ़ाइल पथ पर निर्भर किए बिना लिखने के लिए, एक रिटर्नेबल स्ट्रीम और एक SaveFormat मान को Presentation.save मेथड को पास करें। यह तरीका तब उपयोगी है जब आउटपुट को वेब सर्विस से लौटाना हो, डेटाबेस में संग्रहीत करना हो, या मेमोरी में प्रोसेस करना हो।

निम्न उदाहरण एक नई प्रस्तुति को फ़ाइल स्ट्रीम में सहेजता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

FileOutputStream = jpype.JClass("java.io.FileOutputStream")

presentation = Presentation()
try:
    output_stream = FileOutputStream("Output.pptx")
    try:
        presentation.save(output_stream, SaveFormat.Pptx)
    finally:
        output_stream.close()
finally:
    presentation.dispose()

पूर्वनिर्धारित व्यू टाइप के साथ प्रस्तुतिकरण सहेजें

आप सहेजी गई प्रस्तुति को PowerPoint द्वारा प्रारंभिक रूप से किस व्यू में खोला जाए, उसे निर्दिष्ट कर सकते हैं। सहेजने से पहले एक ViewType मान के साथ ViewProperties.setLastView मेथड का उपयोग करें।

निम्न उदाहरण स्लाइड मास्टर व्यू को प्रारंभिक व्यू के रूप में कॉन्फ़िगर करता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, ViewType

presentation = Presentation()
try:
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView)
    presentation.save("SlideMasterView.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

स्ट्रिक्ट Office Open XML फ़ॉर्मेट में प्रस्तुतिकरण सहेजें

एक PPTX फ़ाइल बनाने के लिए जो Office Open XML के स्ट्रिक्ट प्रोफ़ाइल के अनुरूप हो, एक PptxOptions इंस्टैंस बनाएं और उसके setConformance मेथड को Conformance.Iso29500_2008_Strict मान के साथ कॉल करें। फिर विकल्पों को Presentation.save मेथड को पास करें।

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Conformance, PptxOptions, Presentation, SaveFormat

options = PptxOptions()
options.setConformance(Conformance.Iso29500_2008_Strict)

presentation = Presentation()
try:
    presentation.save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

Zip64 मोड में Office Open XML फ़ॉर्मेट में प्रस्तुतिकरण सहेजें

एक मानक ZIP आर्काइव प्रत्येक एंट्री के संकुचित व असंकुचित आकार, कुल आर्काइव आकार, और एंट्री की संख्या को सीमित करता है। क्योंकि PPTX फ़ाइल एक ZIP आर्काइव है, बहुत बड़ी प्रस्तुति इन सीमाओं को पार कर सकती है। ZIP64 एक्सटेंशन ये सीमाएँ बढ़ा देते हैं।

PptxOptions.setZip64Mode मेथड का उपयोग करके निर्धारित करें कि Aspose.Slides ZIP64 एक्सटेंशन लिखे या नहीं:

  • IfNecessary केवल तब ZIP64 का उपयोग करता है जब प्रस्तुति मानक ZIP सीमाओं से अधिक हो। यह डिफ़ॉल्ट मोड है।
  • Never ZIP64 एक्सटेंशन को अक्षम करता है।
  • Always हमेशा ZIP64 एक्सटेंशन लिखता है।

निम्न उदाहरण आउटपुट प्रस्तुति के लिए हमेशा ZIP64 एक्सटेंशन सक्षम करता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PptxOptions, Presentation, SaveFormat, Zip64Mode

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setZip64Mode(Zip64Mode.Always)

    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

संकुचन स्तरों के साथ Office Open XML फ़ॉर्मेट में प्रस्तुतिकरण सहेजें

PPTX आउटपुट के लिए, आप PptxOptions.setCompressionLevel मेथड का उपयोग करके सहेजने की गति और फ़ाइल आकार के बीच संतुलन स्थापित कर सकते हैं। CompressionLevel क्लास निम्न मान प्रदान करती है:

  • None डेटा को बिना संकुचन के संग्रहीत करता है।
  • Level1 सबसे तेज़ संकुचन और सबसे बड़ा संकुचित आउटपुट देता है।
  • Level2 से Level5 तक धीरे‑धीरे छोटे आउटपुट को प्राथमिकता देता है जबकि सहेजने की गति घटती है।
  • Level6 सहेजने की गति और फ़ाइल आकार के बीच संतुलन बनाता है। यह डिफ़ॉल्ट स्तर है।
  • Level7 और Level8 छोटे आउटपुट को और अधिक प्राथमिकता देते हैं।
  • Level9 सबसे मजबूत संकुचन प्रदान करता है और सबसे अधिक प्रोसेसिंग समय लेता है।

निम्न उदाहरण संकुचन के बिना एक प्रस्तुति सहेजता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setCompressionLevel(CompressionLevel.None_)

    presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

निम्न उदाहरण अधिकतम संकुचन स्तर का उपयोग करता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import CompressionLevel, PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setCompressionLevel(CompressionLevel.Level9)

    presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

थंबनेल रिफ्रेश किए बिना प्रस्तुतिकरण सहेजें

जब एक प्रस्तुति PPTX के रूप में सहेजी जाती है, तो PptxOptions.setRefreshThumbnail मेथड उसके दस्तावेज़ थंबनेल को नियंत्रित करता है:

  • True सहेजने के दौरान थंबनेल को पुनः उत्पन्न करता है। यह डिफ़ॉल्ट मान है।
  • False मौजूदा थंबनेल को संरक्षित रखता है। यदि प्रस्तुति में थंबनेल नहीं है, तो Aspose.Slides नया थंबनेल नहीं बनाता।

निम्न उदाहरण थंबनेल को रिफ्रेश किए बिना एक प्रस्तुति सहेजता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PptxOptions, Presentation, SaveFormat

presentation = Presentation("Sample.pptx")
try:
    options = PptxOptions()
    options.setRefreshThumbnail(False)

    presentation.save("Output.pptx", SaveFormat.Pptx, options)
finally:
    presentation.dispose()

सहेजने की प्रगति को प्रतिशत के रूप में रिपोर्ट करें

सहेजने के ऑपरेशन की निगरानी करने के लिए, jpype.JProxy के माध्यम से एक Python प्रोग्रेस हैंडलर रजिस्टर करें और उसे SaveOptions.setProgressCallback मेथड को पास करें। Aspose.Slides तब निर्यात के दौरान प्रोग्रेस मानों के साथ हैंडलर की reporting मेथड को कॉल करता है।

निम्न उदाहरण PDF निर्यात की प्रगति को कंसोल पर रिपोर्ट करता है:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PdfOptions, Presentation, SaveFormat


class ExportProgressHandler:
    def reporting(self, progress_value):
        progress = int(progress_value)
        print(f"{progress}% of the file has been converted.")


handler = ExportProgressHandler()
callback = jpype.JProxy("com.aspose.slides.IProgressCallback", inst=handler)
options = PdfOptions()
options.setProgressCallback(callback)

presentation = Presentation("Sample.pptx")
try:
    presentation.save("Output.pdf", SaveFormat.Pdf, options)
finally:
    presentation.dispose()

FAQ

क्या Aspose.Slides इंक्रीमेंटल या “फ़ास्ट सेव?” का समर्थन करता है?

नहीं। प्रत्येक सहेजने का ऑपरेशन पूरी आउटपुट फ़ाइल लिखता है, न कि केवल बदले हुए हिस्सों को अपडेट करता है।

क्या कई थ्रेड्स एक ही Presentation इंस्टैंस को सहेज सकते हैं?

नहीं। एक Presentation इंस्टैंस थ्रेड‑सेफ़ नहीं है (/slides/hi/python-java/multithreading/)। प्रत्येक इंस्टैंस को केवल एक थ्रेड से ही एक्सेस और सहेजें।

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

Hyperlinks प्रस्तुति में रहती हैं। Aspose.Slides बाहरी लिंक की फ़ाइलें कॉपी नहीं करता, इसलिए सहेजी गई प्रस्तुति को अभी भी उनके स्थान तक पहुंचना चाहिए।

क्या मैं लेखक, शीर्षक, कंपनी, और निर्माण तिथि जैसी दस्तावेज़ मेटाडाटा सहेज सकता हूँ?

हां। सहेजने से पहले उचित document properties सेट करें, और Aspose.Slides उन्हें आउटपुट फ़ाइल में लिखेगा।