Az eredeti bemutató formátum meghatározása Pythonban
Áttekintés
A bemutató betöltése után olvassa el a csak olvasható Presentation.source_format tulajdonságot, hogy meghatározza annak eredeti formátumát. Használja, amikor a későbbi feldolgozás attól a formátumtól függ, amelyből a jelenlegi példány betöltődött.
A forrásformátum különbözik a kimeneti fájlhoz kiválasztott SaveFormat értéktől. Más formátumba mentés nem változtatja meg a meglévő példány forrásformátumát.
A fájl forrásformátumának olvasása
Ez a példa egy meglévő sample.pptx fájlt igényel. Betölti a fájlt, és a Presentation.source_format alapján választja ki az alkalmazás feldolgozási szabályát, a fájlnév helyett. Módosítsa a bemeneti útvonalat más formátumok kipróbálásához. A példa kiírja a kiválasztott szabályt; cserélje le az üzeneteket saját alkalmazáslogikájára.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
source_format = presentation.source_format
if source_format in (slides.SourceFormat.PPT, slides.SourceFormat.PPS, slides.SourceFormat.POT):
print("Use the legacy PowerPoint processing policy.")
elif source_format == slides.SourceFormat.PPTX:
print("Use the standard PPTX processing policy.")
else:
print(f"Use the general policy for {source_format.name}.")
A támogatott értékek felismerése
A SourceFormat felsorolja a következő bemutatóformátumokat. Az alábbi kiterjesztések a szokásos kiterjesztések, nem az eredeti fájlnév rekonstrukciója.
| SourceFormat érték | Kiterjesztés | Formátum |
|---|---|---|
PPT |
.ppt |
PowerPoint 97–2003 bemutató |
PPTX |
.pptx |
Office Open XML bemutató |
PPTM |
.pptm |
Makróval bővített Office Open XML bemutató |
PPS |
.pps |
PowerPoint 97–2003 diavetítés |
PPSX |
.ppsx |
Office Open XML diavetítés |
PPSM |
.ppsm |
Makróval bővített Office Open XML diavetítés |
POT |
.pot |
PowerPoint 97–2003 sablon |
POTX |
.potx |
Office Open XML sablon |
POTM |
.potm |
Makróval bővített Office Open XML sablon |
ODP |
.odp |
OpenDocument bemutató |
OTP |
.otp |
OpenDocument bemutató sablon |
FODP |
.fodp |
Flat XML ODF bemutató |
XML |
.xml |
PowerPoint XML bemutató |
A forrásformátum olvasása egy folyam (stream) esetén
Ez a példa egy meglévő sample.pps fájlt igényel. A fájl bájtjainak memóriában lévő stream-be olvasása modellezi a névtelen bemenetet, például adatbázisértéket vagy feltöltött bájt tömböt. A Presentation konstruktora csak a stream-et kapja.
import io
import aspose.slides as slides
with open("sample.pps", "rb") as input_file:
data = input_file.read()
with io.BytesIO(data) as stream:
with slides.Presentation(stream) as presentation:
print(f"Source format: {presentation.source_format.name}")
A PPT, PPS és POT ugyanazt a bináris formátumot használja. Fájlúton történő betöltéskor a kiterjesztés segíthet megkülönböztetni a diavetítést vagy sablont. Név nélkül a régi PPS és POT tartalom SourceFormat.PPT‑ként jelenhet meg; a fenti PPS példa PPT‑t jelent.
Ha az alkalmazásnak meg kell őriznie a különbséget, tartsa meg az eredeti fájlnevet vagy az altípus metaadatait külön. A kiterjesztés hasznos útmutató ezekhez a régi altípusokhoz, de nem lehet az egyetlen alap a tetszőleges bemutatótartalom azonosításához.
Az észlelés összehasonlítása betöltés előtt és után
Használja a PresentationFactory.get_presentation_info és a PresentationInfo.load_format módszereket, ha szüksége van a fájl ellenőrzésére a teljes bemutató objektummodell betöltése előtt. Használja a Presentation.source_format‑t, ha a példány már létezik.
Ez a példa sample.pptx‑et igényel, és mindkét ellenőrzésnél PPTX‑et nyomtat. Éles környezetben válassza meg a feldolgozási szakaszhoz megfelelő API‑t; egy már betöltött bemutató nem igényel második ellenőrzést a forrásformátum megállapításához.
import aspose.slides as slides
path = "sample.pptx"
information = slides.PresentationFactory.instance.get_presentation_info(path)
print(f"Before loading: {information.load_format.name}")
with slides.Presentation(path) as presentation:
print(f"After loading: {presentation.source_format.name}")
A visszatérési értékek különféle enumerációk: LoadFormat és SourceFormat. Ne hasonlítsa össze őket a numerikus értékek átkonvertálásával, és ne tételezze fel, hogy minden formátumnak azonos észlelési eredményei vannak. A lent leírt mentés‑újra megnyitás ellenőrzésben a PowerPoint XML betöltés előtt LoadFormat.UNKNOWN‑ként jelent meg, betöltés után pedig SourceFormat.XML‑ként.
A forrás- és kimeneti formátumok különválasztása
Ez a példa sample.pptx‑et igényel, és converted.odp‑t ír. Mind a mentés előtt, mind után PPTX‑et nyomtat az eredeti példányra. Csak az ODP kimenetből betöltött új példány jelent ODP‑t.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
print(f"Before saving: {presentation.source_format.name}")
presentation.save("converted.odp", slides.export.SaveFormat.ODP)
print(f"After saving: {presentation.source_format.name}")
with slides.Presentation("converted.odp") as reopened:
print(f"Reopened output: {reopened.source_format.name}")
Az slides.Presentation()‑vel nulláról létrehozott bemutató SourceFormat.PPTX‑t jelent. Nincs bemeneti fájl: ez az alapértelmezett érték egy újonnan létrehozott példánynál, nem azt bizonyítja, hogy PPTX fájl lett betöltve. Kövesse nyomon, hogy az alkalmazás létrehozta‑e vagy betöltötte‑e a példányt, ha ez a különbség fontos.
Forrásformátum leképezése kiterjesztésre
A következő példa sample.pptx‑et igényel. Minden jelenleg támogatott SourceFormat értéket leképez egy szokásos kiterjesztésre, a bemeneti fájlnév elemzése nélkül. A tartalék elkerüli, hogy ismeretlen értékhez csendben kiterjesztést rendeljünk.
import aspose.slides as slides
extensions = {
slides.SourceFormat.PPT: ".ppt",
slides.SourceFormat.PPTX: ".pptx",
slides.SourceFormat.PPTM: ".pptm",
slides.SourceFormat.PPS: ".pps",
slides.SourceFormat.PPSX: ".ppsx",
slides.SourceFormat.PPSM: ".ppsm",
slides.SourceFormat.POT: ".pot",
slides.SourceFormat.POTX: ".potx",
slides.SourceFormat.POTM: ".potm",
slides.SourceFormat.ODP: ".odp",
slides.SourceFormat.OTP: ".otp",
slides.SourceFormat.FODP: ".fodp",
slides.SourceFormat.XML: ".xml",
}
with slides.Presentation("sample.pptx") as presentation:
extension = extensions.get(presentation.source_format)
print(extension if extension is not None else "No extension mapping is available.")
Ez a leképezés nem konvertál fájlt, és nem állítja vissza a stream betöltése során elveszett régi PPS/POT altípust. Valódi mentéshez válasszon explicit SaveFormat‑t, vagy használja a Save Presentations in Their Original Format konverziót.
Formátumok ellenőrzése mentés és újranyitás által
Ez az önálló példa létrehoz egy bemutatót, és három fájlt ír a munkakönyvtárba, felülírva az azonos nevű fájlokat. Minden kimenetet újból megnyit mind útvonallal, mind memóriában lévő stream‑mel. PPTX és ODP esetén mindkét útvonal a mentett formátumot jelenti. PPS esetén az útvonal szerint betöltés PPS‑t ad, míg a névtelen bájtok betöltése PPT‑t ad.
import io
import aspose.slides as slides
formats = [slides.export.SaveFormat.PPTX, slides.export.SaveFormat.ODP, slides.export.SaveFormat.PPS]
with slides.Presentation() as presentation:
for output_format in formats:
path = f"roundtrip.{output_format.name.lower()}"
presentation.save(path, output_format)
with open(path, "rb") as input_file:
data = input_file.read()
with slides.Presentation(path) as from_file:
with io.BytesIO(data) as stream:
with slides.Presentation(stream) as from_stream:
print(f"{output_format.name}: file={from_file.source_format.name}, stream={from_stream.source_format.name}")
A fenti formátumokkal végzett ellenőrzés a megfelelő kiterjesztésű generált bemutatók esetén a következő eredményeket hozta:
| Mentett formátum | SourceFormat fájlúton | SourceFormat névtelen stream‑ből |
|---|---|---|
| PPT | PPT |
PPT |
| PPTX, PPTM | PPTX, PPTM respectively |
Same as file path |
| PPS | PPS |
PPT |
| PPSX, PPSM | PPSX, PPSM respectively |
Same as file path |
| POT | POT |
PPT |
| POTX, POTM | POTX, POTM respectively |
Same as file path |
| ODP, OTP | ODP, OTP respectively |
Same as file path |
| FODP | FODP |
FODP |
| PowerPoint XML | XML |
XML |
Ezeknél az ellenőrzéseknél az egyetlen forrásformátum normalizáció a PPS/POT PPT‑re való átalakítása névtelen stream‑eknél. A táblázat a formátum azonosítását írja le, nem a bemutató minden jellemzőjének megőrzését a konverzió során.
GYIK
Megváltozik-e egy PPTX‑ből betöltött bemutató forrásformátuma, ha ODP‑ként mentjük?
Nem. A meglévő példány továbbra is PPTX‑et jelent. A mentett ODP fájlból betöltött példány ODP‑t jelent.
Meg tud-e egy stream mindig megkülönböztetni egy régi bemutatót, diavetítést és sablont?
Nem. A PPT, PPS és POT ugyanazt a bináris formátumot osztja meg. Ha a különbség fontos, tartsa meg külön a fájlnevet vagy az altípus metaadatait.
Melyik API‑t kell használnom, ha a bemutató már be van töltve?
Olvassa a Presentation.source_format. Használja a PresentationFactory.get_presentation_info‑t a betöltés előtti ellenőrzéshez.