Prezentációk mentése Pythonon keresztül Java-val

Áttekintés

Miután létrehoz egy prezentációt vagy nyisson meg egy meglévőt, használja a Presentation.save metódust az eredmény írásához. Az Aspose.Slides for Python via Java képes egy prezentációt fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és egyéb formátumokban. A következő szakaszok a standard mentési műveleteket és a PPTX kimenethez elérhető beállításokat mutatják be.

Prezentációk mentése fájlokba

A prezentáció fájlba mentéséhez adja meg a kimeneti útvonalat és egy SaveFormat értéket a Presentation.save metódusnak. A formátumérték határozza meg az Aspose.Slides által létrehozott fájl típusát.

Az alábbi példa egy prezentációt hoz létre, és PPTX fájlként menti el:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # Ide adjon hozzá vagy módosítsa a prezentáció tartalmát.

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

Prezentációk mentése az eredeti formátumban

A fájl- és adatfolyam‑felismerési példákért, az újonnan létrehozott prezentációk viselkedéséért, valamint a forrás‑ és kimeneti formátumok megkülönböztetéséért lásd a Determine the Original Presentation Format oldalt.

Kötegelt feldolgozási alkalmazásban a bemeneti formátum nem ismerhető előre. Fájl betöltése után olvassa ki az eredeti formátumot a Presentation.getSourceFormat metódussal. Adja át a kapott SourceFormat értéket a SlideUtil.toSaveFormat metódusnak a megfelelő SaveFormat érték lekéréséhez, majd használja a Presentation.save metódust a módosított prezentáció írásához.

Az alábbi teljes példa minden fájlt feldolgoz egy bemeneti könyvtárban, frissíti a címét, és a betöltött formátumból a kimeneti könyvtárba menti:

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 és PowerPoint XML formátumokat térképezi a megfelelő prezentáció‑mentés formátumokra. Csak a prezentáció forrásformátumait térképezi; nem arra szolgál, hogy exportformátumokat, például PDF, HTML, TIFF vagy képek válasszon. Nem támogatott vagy érvénytelen SourceFormat érték átadása IllegalArgumentException kivételt eredményez.

A régi PPT, PPS és POT fájlok ugyanazt a bináris konténert használják. Ha egy ilyen prezentációt kiterjesztés nélküli adatfolyamból töltik be, egy PPS vagy POT fájlt ezért PPT‑nek azonosíthatnak. Ha meg kell őrizni ezeket a régi al-típusokat, tartsa meg az eredeti fájlnevet vagy formátum‑metaadatot külön, és használja őket a kimeneti fájlnév és formátum meghatározásához.

Prezentációk mentése adatfolyamokba

Prezentáció írásához végső fájlútvonal nélkül adjon meg egy írható adatfolyamot és egy SaveFormat értéket a Presentation.save metódusnak. Ez a megközelítés akkor hasznos, ha a kimenetet egy webszolgáltatásból kell visszaadni, adatbázisba tárolni vagy memória‑szinten feldolgozni.

Az alábbi példa egy új prezentációt fájl‑adatfolyamba ment:

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()

Prezentációk mentése előre meghatározott nézettípussal

Megadhatja azt a nézetet, amelyben a PowerPoint először megnyitja a mentett prezentációt. Használja a ViewProperties.setLastView metódust egy ViewType értékkel a mentés előtt.

Az alábbi példa a Dia‑mester nézetet állítja be kezdeti nézetként:

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()

Prezentációk mentése szigorú Office Open XML formátumban

Ahhoz, hogy egy PPTX fájl a Office Open XML szigorú profiljának megfeleljen, hozzon létre egy PptxOptions példányt, és használja a setConformance metódust a Conformance.Iso29500_2008_Strict értékkel. Ezután adja át az opciókat a Presentation.save metódusnak.

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()

Prezentációk mentése Office Open XML formátumban Zip64 módban

Egy szabványos ZIP archívum korlátozza az egyes bejegyzések tömörített és tömörítetlen méretét, a teljes archívum méretét és a bejegyzések számát. Mivel egy PPTX fájl ZIP archívum, egy nagyon nagy prezentáció túllépheti ezeket a korlátokat. A ZIP64 kiterjesztések emelik a vonatkozó méret‑ és bejegyzésszám‑korlátokat.

Használja a PptxOptions.setZip64Mode metódust annak szabályozására, hogy az Aspose.Slides ZIP64 kiterjesztéseket írjon-e:

  • IfNecessary csak akkor használ ZIP64‑et, ha a prezentáció meghaladja a szabványos ZIP‑korlátokat. Ez az alapértelmezett mód.
  • Never letiltja a ZIP64 kiterjesztéseket.
  • Always mindig írja a ZIP64 kiterjesztéseket.

Az alábbi példa mindig engedélyezi a ZIP64 kiterjesztéseket a kimeneti prezentációhoz:

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()

Prezentációk mentése Office Open XML formátumban tömörítési szintekkel

PPTX kimenetnél a mentési sebesség és a fájlméret egyensúlyozásához használhatja a PptxOptions.setCompressionLevel metódust. A CompressionLevel osztály a következő értékeket kínálja:

  • None adatot tömörítés nélkül tárol.
  • Level1 a leggyorsabb tömörítést és a legnagyobb tömörített kimenetet biztosítja.
  • Level2‑től Level5 fokozatosan a kisebb kimenet felé hajlik a mentési sebesség rovására.
  • Level6 egyensúlyban tartja a mentési sebességet és a fájlméretet. Ez az alapértelmezett szint.
  • Level7 és Level8 tovább részesítik a kisebb kimenetet a sebesség rovására.
  • Level9 a legerősebb tömörítést nyújtja, és a legtöbb feldolgozási időt igényli.

Az alábbi példa tömörítés nélkül menti a prezentációt:

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()

Az alábbi példa a maximális tömörítési szintet használja:

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()

Prezentációk mentése a miniatűr frissítése nélkül

Amikor egy prezentációt PPTX‑ként ment, a PptxOptions.setRefreshThumbnail metódus szabályozza a dokumentum miniatűrjét:

  • True a mentés során újra generálja a miniatűröt. Ez az alapértelmezett érték.
  • False megőrzi a meglévő miniatűrt. Ha a prezentációnak nincs miniatűre, az Aspose.Slides nem generál újat.

Az alábbi példa a miniatűr frissítése nélkül menti a prezentációt:

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()

Mentés előrehaladásának jelentése százalékban

A mentési művelet nyomon követéséhez regisztráljon egy Python előrehaladás‑kezelőt a jpype.JProxy‑val, és adja át a SaveOptions.setProgressCallback metódusnak. Az Aspose.Slides ekkor a kezelő reporting metódusát hívja meg előrehaladási értékekkel az export során.

Az alábbi példa a PDF export előrehaladását jelzi a konzolra:

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()

Gyakran Ismételt Kérdések

Támogatja az Aspose.Slides az inkrementális vagy „gyors mentést”?

Nem. Minden mentési művelet egy teljes kimeneti fájlt ír, nem csak a megváltozott részeket frissíti.

Több szál mentheti ugyanazt a Presentation példányt?

Nem. Egy Presentation példány nem szálbiztos. Minden példányt egyszerre csak egy szálól szabad hozzáférni és menteni.

Mi történik a hiperhivatkozásokkal és külsőleg hivatkozott fájlokkal, amikor mentek egy prezentációt?

Hyperlinks megmaradnak a prezentációban. Az Aspose.Slides nem másolja a külsőleg hivatkozott fájlokat, ezért a mentett prezentációnak továbbra is hozzá kell férnie azok helyéhez.

Menthetek dokumentum metaadatokat, például szerzőt, címet, céget és létrehozás dátumát?

Igen. Állítsa be a megfelelő document properties értékeket a mentés előtt, és az Aspose.Slides beírja őket a kimeneti fájlba.