Prezentációs információk lekérése és frissítése Pythonon keresztül Java-val
Áttekintés
Az Aspose.Slides képes azonosítani egy prezentáció formátumát és kiolvasni a dokumentum metaadatait anélkül, hogy teljes prezentációs objektummodellt hozna létre. Ez akkor hasznos, ha fájlokat kell kategorizálni, leltárt építeni, vagy tulajdonságokat megtekinteni, mielőtt eldöntené, hogy betölti‑e és feldolgozza‑e a prezentáció tartalmát.
A példák az Aspose.Slides for Python via Java és egy kompatibilis Java‑futtatókörnyezet használatát feltételezik. Minden példa elindítja a JVM‑et, ha az még nem fut. Adja meg a példákban használt útvonalakon lévő meglévő prezentációs fájlokat.
Ez a cikk a könnyű ellenőrzést mutatja be a PresentationFactory és a PresentationInfo segítségével, valamint a célzott módosításokat a DocumentProperties használatával.
Prezentációformátum ellenőrzése
Ha már betöltött prezentációja van, lásd a Determine the Original Presentation Format cikket a betöltés utáni felismeréshez és a régi PPT, PPS és POT adatfolyamok korlátozásaihoz.
Használja a PresentationFactory.getPresentationInfo metódust egy fájl ellenőrzéséhez anélkül, hogy Presentation példányt hozna létre. A PresentationInfo.getLoadFormat metódus jelzi a felismert formátumot, például PPTX, PPT vagy ODP.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import LoadFormat, PresentationFactory
file_names = ["pres.pptx", "pres.ppt", "pres.odp"]
for file_name in file_names:
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_name)
load_format = presentation_info.getLoadFormat()
format_name = f"Other ({load_format})"
if load_format == LoadFormat.Pptx:
format_name = "PPTX"
elif load_format == LoadFormat.Ppt:
format_name = "PPT"
elif load_format == LoadFormat.Odp:
format_name = "ODP"
print(f"{file_name}: {format_name}")
Könnyű prezentációs leltár építése
Ha sok prezentációs fájlt dolgoz fel, előfordulhat, hogy egy kompakt leltárra van szüksége validáláshoz, indexeléshez vagy dokumentumkezelő rendszerhez. Ebben a helyzetben használja a PresentationFactory.getPresentationInfo metódust egy PresentationInfo objektum létrehozásához, majd hívja a PresentationInfo.readDocumentProperties metódust a dokumentum metaadatainak beolvasásához. Ez a megközelítés nem hoz létre Presentation példányt, és nem igényli a teljes objektummodell bejárását.
A DocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltárértékeket adják:
| Metódus | Leltárérték |
|---|---|
| getSlides | Diák összes száma. |
| getHiddenSlides | Rejtett diák száma. |
| getNotes | Jegyzetet tartalmazó diák száma. |
| getParagraphs | Bekapcsolt bekezdések összes száma, ha elérhető. |
| getWords | Szavak összes száma. |
| getMultimediaClips | Hang‑ és videoklipek összes száma. |
Az alábbi példa beolvassa ezeket az értékeket anélkül, hogy Presentation objektumot hozna létre, és egy kompakt leltárt nyomtat ki. Emellett a getHeadingPairs metódust kombinálja a getTitlesOfParts eredményével a tartalomcsoportok (pl. betűtípusok, témák, diacímek) megjelenítéséhez.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from pathlib import Path
from asposeslides.api import LoadFormat, PresentationFactory
file_path = "sample.pptx"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(file_path)
document_properties = presentation_info.readDocumentProperties()
load_format = presentation_info.getLoadFormat()
format_name = f"Other ({load_format})"
if load_format == LoadFormat.Pptx:
format_name = "PPTX"
elif load_format == LoadFormat.Ppt:
format_name = "PPT"
elif load_format == LoadFormat.Odp:
format_name = "ODP"
print(f"File: {Path(file_path).name}")
print(f"Format: {format_name}")
print(f"Title: {document_properties.getTitle()}")
print(f"Author: {document_properties.getAuthor()}")
print("Statistics:")
print(f" Slides: {document_properties.getSlides()}")
print(f" Hidden slides: {document_properties.getHiddenSlides()}")
print(f" Slides with notes: {document_properties.getNotes()}")
print(f" Paragraphs: {document_properties.getParagraphs()}")
print(f" Words: {document_properties.getWords()}")
print(f" Multimedia clips: {document_properties.getMultimediaClips()}")
heading_pairs = document_properties.getHeadingPairs()
titles_of_parts = document_properties.getTitlesOfParts()
heading_pairs = heading_pairs if heading_pairs is not None else []
titles_of_parts = titles_of_parts if titles_of_parts is not None else []
part_index = 0
if len(heading_pairs) == 0 or len(titles_of_parts) == 0:
print("Content groups: not available")
else:
print("Content groups:")
for heading_pair in heading_pairs:
print(f" {heading_pair.getName()} ({heading_pair.getCount()})")
for part_offset in range(heading_pair.getCount()):
if part_index >= len(titles_of_parts):
break
print(f" - {titles_of_parts[part_index]}")
part_index += 1
if part_index < len(titles_of_parts):
print(" Other parts:")
while part_index < len(titles_of_parts):
print(f" - {titles_of_parts[part_index]}")
part_index += 1
Minden HeadingPair egy csoportnevet és a csoport elemeinek számát adja meg. A DocumentProperties.getTitlesOfParts lapos, rendezett tömböt ad vissza, ezért a heading‑pair‑ek által meghatározott egymást követő címek számát kell felhasználni.
Tárolt metaadatok és formátumkorlátok
A PresentationInfo.readDocumentProperties által visszaadott leltártulajdonságok a forrásdokumentumban elérhető metaadatokat tükrözik. Az Aspose.Slides nem tölti be és nem járja be a prezentációs objektummodellt ezen értékek újraszámításához. Hiányzó tulajdonságok alapértelmezett értékkel jelennek meg, a tárolt értékek pedig elavulhatnak, ha az utolsó mentő alkalmazás nem frissítette a dokumentumtulajdonságokat.
- PPTX: A formátum kiterjesztett dokumentumtulajdonságokat biztosít a diák, jegyzetek, rejtett diák, bekezdések, szavak és multimédia számához, valamint heading‑pair‑ekhez és részcímekhez. Az elérhetőség attól függ, mely tulajdonságokat írta a dokumentum előállítója.
- PPT: A bináris formátum megfelelő dokumentum‑összegző tulajdonságokat tud tárolni. Ha egy tulajdonság hiányzik vagy nem frissült a dokumentum előállítója által, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza a diák alapján történő újraszámolás helyett.
- ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat (oldal, bekezdés, szó szám) szolgáltatnak, de ezek az értékek nem felelnek meg minden PowerPoint‑specifikus kiterjesztett tulajdonságnak. A rejtett diák, jegyzet‑diák, multimédia, heading‑pair és részcím metaadatok hiányozhatnak, és a leltártulajdonságok alapértelmezett értéket adhatnak. Ne tekintse a null értéket vagy az üres tömböt tekintélyes bizonyítéknak arra, hogy a megfelelő tartalom hiányzik.
Használja a könnyű metaadat‑megközelítést leltárokhoz és előzetes ellenőrzésekhez. Töltse be a prezentációt és vizsgálja meg a „live” objektummodellt, ha az eredménynek tükröznie kell a memória‑beli változásokat, vagy ha ellenőrizni kívánja a tényleges prezentációs tartalmat.
Prezentációs tulajdonságok frissítése
A PresentationInfo.readDocumentProperties által visszaadott tulajdonságok módosíthatók anélkül, hogy Presentation példányt hoznánk létre. Alkalmazza a módosításokat a PresentationInfo.updateDocumentProperties metódussal, majd írja ki a kötött prezentációt a PresentationInfo.writeBindedPresentation segítségével.
Az alábbi kép a dokumentum eredeti tulajdonságait mutatja.

Az alábbi példa megváltoztatja a címet és a legutóbb mentett időt, majd az eredményt egy új fájlba írja:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import PresentationFactory
from java.io import FileOutputStream
from java.util import Date
source_file = "sample.pptx"
output_file = "sample_with_updated_properties.pptx"
presentation_info = PresentationFactory.getInstance().getPresentationInfo(source_file)
document_properties = presentation_info.readDocumentProperties()
document_properties.setTitle("Quarterly sales report")
last_saved_time = Date()
document_properties.setLastSavedTime(last_saved_time)
presentation_info.updateDocumentProperties(document_properties)
output_stream = FileOutputStream(output_file)
try:
presentation_info.writeBindedPresentation(output_stream)
finally:
output_stream.close()
Az alábbi kép a frissített dokumentumtulajdonságokat ábrázolja.

Hasznos hivatkozások
Kapcsolódó biztonsági ellenőrzések és védelmi beállítások témájában lásd az alábbi cikkeket:
Gyakran ismételt kérdések
Hogyan ellenőrizhetem, hogy a betűtípusok beágyazottak‑e, és melyek azok?
Töltse be a prezentációt, és használja a Presentation.getFontsManager metódust. Hívja a FontsManager.getEmbeddedFonts metódust a beágyazott betűtípusok lekéréséhez, valamint a FontsManager.getFonts metódust a prezentáció által használt betűtípusokhoz. Hasonlítsa össze a két eredményt, hogy megtalálja a rendereléshez szükséges, de nem beágyazott betűtípusokat.
Hogyan tudom gyorsan megállapítani, hogy a fájl rejtett diákot tartalmaz‑e, és hány darabot?
Ha a tárolt dokumentum‑metaadat elegendő, olvassa a DocumentProperties.getHiddenSlides értéket a PresentationFactory.getPresentationInfo és a PresentationInfo.readDocumentProperties segítségével. Ez alkalmas egy könnyű leltárhoz. Ha a prezentáció memóriában módosult, a tárolt metaadat hiányozhat vagy elavult lehet, vagy élő értékeket kell ellenőriznie; ekkor iteráljon a Presentation.getSlides metóduson, és vizsgálja meg minden dia Slide.getHidden metódusát.
Felismerhetem‑e, hogy egyedi dia‑méret és tájolás van‑e használatban, és eltér‑e‑nek az alapértelmezettől?
Igen. Töltse be a prezentációt, és hívja a Presentation.getSlideSize metódust. Használja a SlideSize.getType, a SlideSize.getSize és a SlideSize.getOrientation metódusokat az aktuális beállítások összehasonlításához a várt előre beállított értékekkel és méretekkel.
Van‑e gyors módja annak, hogy lássam, a diagramok külső adatforrásra hivatkoznak‑e?
Igen. Keresse meg minden Chart elemet, és hívja a ChartData.getDataSourceType metódust. Ha a forrás egy külső munkafüzet, hívja a ChartData.getExternalWorkbookPath metódust. Az adatforrás típusa és az útvonal azonosítja a külső hivatkozást, de a cél elérhetőségének ellenőrzése külön erőforrás‑ellenőrzést igényel.
Hogyan értékelhetem a „nehéz” diákot, amelyek lassíthatják a renderelést vagy a PDF‑exportot?
Nincs egyetlen komplexitási tulajdonság sem. Járja be a Presentation.getSlides és minden dia BaseSlide.getShapes gyűjteményét. Használjon alakzat‑számot, nagy képeket, effektusokat, animációkat vagy multimédiát szűrőjelzésként, és végezzen egy reprezentatív renderelést vagy exportot, mielőtt egy diát megerősített teljesítmény‑szűkítőnek tekintene.