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

Áttekintés

Miután létrehoz egy prezentációt vagy nyiss 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 a prezentációt fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és egyéb formátumokban. Az alábbi szakaszok a szabványos mentési műveleteket és a PPTX kimenetre elérhető beállításokat tárgyalják.

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, milyen típusú fájlt hoz létre az Aspose.Slides.

Az alábbi példa létrehoz egy prezentációt, é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:
    # Itt adja hozzá vagy módosítsa a prezentáció tartalmát.

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

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

Kötegfeldolgozó alkalmazásban a bemeneti formátum előre nem ismert. 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, hogy megkapja a megfelelő SaveFormat értéket, 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 egy kimeneti könyvtárba menti abban a formátumban, amiben betöltötték:

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ési formátumokra. Csak prezentáció forrásformátumokat térképez; nem célja exportformátumok, például PDF, HTML, TIFF vagy képek kiválasztása. 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ájl ezért PPT‑ként azonosítható. Ha meg kell őrizni ezeket a régi altípusokat, tartsa meg az eredeti fájlnevet vagy formátummetaadatokat külön, és használja őket a kimeneti fájlnév és formátum kiválasztásakor.

Prezentációk mentése adatfolyamokba

A prezentáció írásához, anélkül hogy végleges fájlútvonalra támaszkodna, adjon meg egy írható adatfolyamot és egy SaveFormat értéket a Presentation.save metódusnak. Ez a megközelítés hasznos, ha a kimenetet webszolgáltatásból kell visszaadni, adatbázisban tárolni vagy memóriában 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ézet típussal

Megadhatja azt a nézetet, amelyben a PowerPoint kezdetben megnyit egy 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 a szigorú Office Open XML formátumban

A Strict profilú Office Open XML‑nek megfelelő PPTX fájl létrehozásához hozza 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 határokat. A ZIP64 kiterjesztések megemelik 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 ír‑e ZIP64 kiterjesztéseket:

  • IfNecessary csak akkor használ ZIP64‑et, ha a prezentáció meghaladja a szabványos ZIP határokat. Ez az alapértelmezett mód.
  • Never letiltja a ZIP64 kiterjesztéseket.
  • Always minden esetben ír 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 biztosítja:

  • 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 kimenetet részesítik előnyben a mentési sebességgel szemben.
  • Level6 egyensúlyt teremt a mentési sebesség és a fájlméret között. Ez az alapértelmezett szint.
  • Level7 és Level8 továbbra is a kisebb kimenetet részesítik előnyben a sebességgel szemben.
  • Level9 a legerősebb tömörítést biztosítja, és a legtöbb feldolgozási időt igényli.

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

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 bélyegkép frissítése nélkül

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

  • True újra generálja a bélyegképet a mentési művelet során. Ez az alapértelmezett érték.
  • False megőrzi a meglévő bélyegképet. Ha a prezentációnak nincs bélyegképe, az Aspose.Slides nem hoz létre újat.

Az alábbi példa egy prezentációt a bélyegkép frissítése nélkül ment:

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ési folyamat jelentése százalékban

A mentési művelet nyomon követéséhez regisztráljon egy Python progress kezelőt a jpype.JProxy‑val, és adja át a SaveOptions.setProgressCallback metódusnak. Az Aspose.Slides ezután a handler 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 konzolra jelenti:

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

GYIK

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

Nem. Minden mentési művelet 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álbiztonságos. Mindig csak egy szál férjen hozzá és mentse a példányt egy időben.

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

Hyperlinks megmaradnak a prezentációban. Az Aspose.Slides nem másolja a külsőleg linkelt fájlokat, így a mentett prezentációnak továbbra is hozzá kell férnie azok helyeihez.

Menthetők dokumentum metaadatok, mint például a szerző, cím, cég és létrehozás dátuma?

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.