Spara presentationer i Python via Java

Översikt

Efter att du har skapat en presentation eller öppnat en befintlig, använder du metoden Presentation.save för att skriva resultatet. Aspose.Slides för Python via Java kan spara en presentation till en fil eller ström i PowerPoint, OpenDocument, PDF och andra format. Följande avsnitt behandlar standard‑sparoperationer och de alternativ som finns för PPTX‑utdata.

Spara presentationer till filer

För att spara en presentation till en fil, skicka utdata‑sökvägen och ett SaveFormat‑värde till metoden Presentation.save. Formatvärdet bestämmer vilken filtyp Aspose.Slides skapar.

Följande exempel skapar en presentation och sparar den som en PPTX‑fil:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # Lägg till eller ändra presentationsinnehåll här.

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

Spara presentationer i deras ursprungliga format

För exempel på fil‑ och strömdetektering, beteendet för nysskapade presentationer och skillnaden mellan käll‑ och utdataformat, se Determine the Original Presentation Format.

I en batch‑bearbetningsapplikation kan indatformatet vara okänt i förväg. Efter att ha laddat en fil, läs dess ursprungliga format från metoden Presentation.getSourceFormat. Skicka det resulterande SourceFormat‑värdet till SlideUtil.toSaveFormat för att få motsvarande SaveFormat‑värde, och använd sedan Presentation.save för att skriva den modifierade presentationen.

Följande kompletta exempel behandlar varje fil i en indatakatalog, uppdaterar dess titel och sparar den till en utdata‑katalog i det format den laddades i:

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 mappar PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP och PowerPoint XML till deras motsvarande presentations‑sparformat. Det mappar bara presentations‑källformat; det är inte avsett att välja exportformat som PDF, HTML, TIFF eller bilder. Att skicka ett ej‑stött eller ogiltigt SourceFormat‑värde resulterar i ett IllegalArgumentException.

Legacy‑PPT, PPS och POT‑filer använder samma binära behållare. När en sådan presentation laddas från en ström utan filändelse kan en PPS‑ eller POT‑fil därför identifieras som PPT. Om bevarande av dessa äldre undertyper krävs, behåll det ursprungliga filnamnet eller formatmetadata separat och använd det när du väljer utdatafilnamn och format.

Spara presentationer till strömmar

För att skriva en presentation utan att förlita dig på en slutlig filsökväg, skicka en skrivbar ström och ett SaveFormat‑värde till metoden Presentation.save. Detta tillvägagångssätt är användbart när utdata måste returneras från en webbtjänst, lagras i en databas eller bearbetas i minnet.

Följande exempel sparar en ny presentation till en filström:

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

Spara presentationer med en fördefinierad vytyp

Du kan ange den vy som PowerPoint initialt öppnar en sparad presentation i. Använd metoden ViewProperties.setLastView med ett ViewType‑värde innan du sparar.

Följande exempel konfigurerar Slide Master‑vyn som initial vy:

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

Spara presentationer i Strict Office Open XML‑format

För att skapa en PPTX‑fil som följer Strict‑profilen för Office Open XML, skapa en PptxOptions-instans och använd dess setConformance-metod med Conformance.Iso29500_2008_Strict. Skicka sedan alternativen till metoden 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()

Spara presentationer i Office Open XML‑format i Zip64‑läge

Ett standard‑ZIP‑arkiv begränsar den komprimerade och okomprimerade storleken för varje post, den totala arkivstorleken och antalet poster. Eftersom en PPTX‑fil är ett ZIP‑arkiv kan en mycket stor presentation överstiga dessa gränser. Zip64‑tillägg höjer de tillämpliga storleks‑ och post‑gränserna.

Använd metoden PptxOptions.setZip64Mode för att styra om Aspose.Slides skriver Zip64‑tillägg:

  • IfNecessary använder Zip64 endast när presentationen överskrider standard‑ZIP‑gränser. Detta är standardläget.
  • Never inaktiverar Zip64‑tillägg.
  • Always skriver alltid Zip64‑tillägg.

Följande exempel aktiverar alltid Zip64‑tillägg för utdata‑presentationen:

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

Spara presentationer i Office Open XML‑format med komprimeringsnivåer

För PPTX‑utdata kan du balansera sparhastighet mot filstorlek genom att använda metoden PptxOptions.setCompressionLevel. Klassen CompressionLevel tillhandahåller följande värden:

  • None lagrar data utan komprimering.
  • Level1 ger snabbast komprimering och största komprimerade utdata.
  • Level2 till Level5 favoriserar gradvis mindre utdata framför sparhastighet.
  • Level6 balanserar sparhastighet och filstorlek. Detta är standardnivån.
  • Level7 och Level8 favoriserar ännu mer mindre utdata framför sparhastighet.
  • Level9 ger starkast komprimering och kräver längst bearbetningstid.

Följande exempel sparar en presentation utan komprimering:

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

Följande exempel använder den maximala komprimeringsnivån:

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

Spara presentationer utan att uppdatera miniatyren

När en presentation sparas som PPTX styr metoden PptxOptions.setRefreshThumbnail dess dokuments miniatyr:

  • True regenererar miniatyren under spar‑operationen. Detta är standardvärdet.
  • False bevarar befintlig miniatyr. Om presentationen saknar miniatyr genererar Aspose.Slides ingen.

Följande exempel sparar en presentation utan att uppdatera miniatyren:

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

Rapportera spar‑framsteg som procentandel

För att övervaka en spar‑operation, registrera en Python‑progress‑handler via jpype.JProxy och skicka den till metoden SaveOptions.setProgressCallback. Aspose.Slides anropar sedan handlerns reporting‑metod med framstegsvärden under exporten.

Följande exempel rapporterar framstegen för en PDF‑export till konsolen:

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

Stöder Aspose.Slides inkrementell eller ”fast save”?

Nej. Varje spar‑operation skriver en komplett output‑fil istället för att bara uppdatera de ändrade delarna.

Kan flera trådar spara samma Presentation‑instans?

Nej. En Presentation‑instans är inte trådsäker. Åtkomst och sparning av varje instans får endast ske från en tråd åt gången.

Vad händer med hyperlänkar och externt länkade filer när jag sparar en presentation?

Hyperlinks förblir i presentationen. Aspose.Slides kopierar inte externt länkade filer, så den sparade presentationen måste fortfarande kunna nå deras platser.

Kan jag spara dokumentmetadata såsom författare, titel, företag och skapandedatum?

Ja. Ställ in lämpliga document properties innan du sparar, så skriver Aspose.Slides dem till output‑filen.