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()
Warning
Ha a Zip64Mode.Never kerül használatra, és a prezentáció nem fér bele a szabványos ZIP‑korlátokba, a mentési művelet PptxException kivételt dob.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:
Truea mentés során újra generálja a miniatűröt. Ez az alapértelmezett érték.Falsemegő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()
Note
A miniatűr frissítésének letiltása csökkentheti a PPTX fájl mentéséhez szükséges időt.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()
Note
Az Aspose egy ingyenes PowerPoint Splitter szolgáltatást kínál, amely az Aspose.Slides API‑val készült. Kiválasztott diákat ment külön PPT vagy PPTX fájlokba.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.