Prezentációs információk lekérdezése és frissítése Pythonon keresztül Java segítségével
Áttekintés
Az Aspose.Slides képes felismerni egy bemutató formátumát, és olvasni a dokumentum metaadatait anélkül, hogy teljes bemutató objektummodellt hozna létre. Ez akkor hasznos, ha fájlokat kell besorolni, készletet építeni, vagy tulajdonságokat ellenőrizni kell, mielőtt eldöntené, hogy betölti és feldolgozza a bemutató tartalmát.
A példákhoz Az Aspose.Slides for Python via Java és egy kompatibilis Java futtatókörnyezet szükséges. Minden példa elindítja a JVM-et, ha még nem fut. Adja meg a meglévő bemutató fájlokat a példákban használt útvonalakon.
Ez a cikk bemutatja a könnyű ellenőrzést a PresentationFactory és a PresentationInfo segítségével, valamint a célzott frissítéseket a DocumentProperties használatával.
Ellenőrizze a bemutató formátumát
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ű bemutató leltár létrehozása
Ha sok bemutató fájlt dolgoz fel, szüksége lehet egy kompakt leltárra az ellenőrzéshez, indexeléshez vagy egy dokumentumkezelő rendszerhez. Ebben a scenárióban használja a PresentationFactory.getPresentationInfo metódust egy PresentationInfo objektum megszerzéséhez, majd hívja a PresentationInfo.readDocumentProperties metódust a dokumentum metaadatainak olvasásához. Ez a megközelítés nem hoz létre Presentation példányt, és nem igényli a teljes bemutató objektummodell bejárását.
A DocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltárértékeket adnak meg:
| Módszer | Leltárérték |
|---|---|
| getSlides | Az összes diák száma. |
| getHiddenSlides | A rejtett diák száma. |
| getNotes | Az a diák száma, amelyek tartalmaznak jegyzeteket. |
| getParagraphs | Az összes bekezdés száma, ha elérhető. |
| getWords | Az összes szó száma. |
| getMultimediaClips | Az összes audio- és videoklip száma. |
A következő példa ezeknek az értékeknek az olvasását mutatja be anélkül, hogy Presentation objektumot hozna létre, és egy kompakt leltárt nyomtat. Emellett a getHeadingPairs metódust kombinálja a getTitlesOfParts metódussal, hogy megjelenítse az olyan tartalomcsoportokat, mint betűtípusok, témák és dia címek.
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 csoportban lévő elemek számát adja meg. A DocumentProperties.getTitlesOfParts egy lapos, rendezett tömböt ad vissza, ezért a csoportonként megadott 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ár tulajdonságok tükrözik a forrásdokumentumban elérhető metaadatokat. Az Aspose.Slides nem tölti be és nem járja be a bemutató objektummodellt, hogy ezeket az értékeket újraszámolja a hívás során. Hiányzó tulajdonságok alapértelmezett értékekkel jelennek meg, és a tárolt értékek elavulhatnak, ha az utoljára mentő alkalmazás nem frissítette a dokumentumtulajdonságokat.
- PPTX: A formátum kiterjesztett dokumentumtulajdonságokat biztosít a diák, jegyzetek, rejtett dia, bekezdés, szó és multimédia számlálókhoz, valamint heading párokhoz és részcímekhez. Az elérhetőség attól függ, mely tulajdonságokat írta a dokumentum előállító.
- PPT: A bináris formátum tárolhat megfelelő dokumentumösszegző tulajdonságokat. Ha egy tulajdonság hiányzik vagy nem frissítette a dokumentum előállító, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza ahelyett, hogy a diákból számolná ki.
- ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat biztosítanak, például oldal-, bekezdés- és szószámot, de ezek az értékek nem térnek le minden PowerPoint-specifikus kiterjesztett tulajdonságra. A rejtett dia, jegyzet dia, multimédia, heading-pair és részcím metaadatok előfordulhatnak, vagy hiányozhatnak, és a leltár tulajdonságok alapértelmezett értékkel térhetnek vissza. Ne tekintse a nulla értéket vagy a ü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árakhoz és előzetes ellenőrzésekhez. Töltse be a bemutatót és ellenőrizze annak élő objektummodelljét, ha az eredménynek tükröznie kell a memóriában történt változásokat, vagy ha a tényleges bemutató tartalmát kell ellenőriznie.
Bemutató Tulajdonságok Frissítése
A PresentationInfo.readDocumentProperties által visszaadott tulajdonságok szintén 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 segítségével, majd írja ki a kötött bemutatót a PresentationInfo.writeBindedPresentation segítségével.
Az alábbi kép az eredeti dokumentumtulajdonságokat mutatja.

A következő példa megváltoztatja a címet és az utolsó mentés időpontját, és 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 mutatja.

Hasznos hivatkozások
A kapcsolódó biztonsági ellenőrzések és védelmi beállítások tekintetében lásd az alábbi cikkeket:
GYIK
Hogyan ellenőrizhetem, hogy a betűtípusok be vannak-e ágyazva, és melyek azok?
Töltse be a bemutatót, és használja a Presentation.getFontsManager metódust. Hívja a FontsManager.getEmbeddedFonts metódust a beágyazott betűtípusok megszerzéséhez, valamint a FontsManager.getFonts metódust a bemutató által használt betűtípusokhoz. Hasonlítsa össze a két eredményt, hogy megtalálja azokat a betűtípusokat, melyek a megjelenítéshez szükségesek, de nincsenek beágyazva.
Hogyan tudom gyorsan megállapítani, hogy a fájl tartalmaz-e rejtett diákat, és hány darab van belőlük?
Amikor a tárolt dokumentummetaadatok elegendőek, olvassa a DocumentProperties.getHiddenSlides értékét a PresentationFactory.getPresentationInfo és a PresentationInfo.readDocumentProperties segítségével. Ez alkalmas könnyű leltárhoz. Ha a bemutató memóriában módosult, a tárolt metaadatok hiányozhatnak vagy elavulhatnak, vagy élő értékek ellenőrzésére van szükség, akkor járja be a Presentation.getSlides gyűjteményt, és ellenőrizze minden dia Slide.getHidden metódusát.
Képes vagyok-e észlelni, hogy egyéni dia méret és orientáció van-e használatban, és eltérnek-e az alapértelmezettől?
Igen. Töltse be a bemutatót, és hívja a Presentation.getSlideSize metódust. Használja a SlideSize.getType, SlideSize.getSize és SlideSize.getOrientation metódusokat az aktuális beállítások összehasonlításához a várt előre definiált értékekkel és méretekkel.
Van-e gyors módja annak, hogy lássam, a diagramok külső adatforrásokra hivatkoznak-e?
Igen. Keresse meg minden Chart elemet, és hívja a ChartData.getDataSourceType metódust. Külső munkafüzet esetén hívja a ChartData.getExternalWorkbookPath metódust. Az adatforrás típusa és az útvonal mutat egy külső hivatkozást, de annak elérhetősége külön erőforrás‑ellenőrzést igényel.
Hogyan értékelhetem a ‘nehéz’ diákokat, 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ámokat, nagy képek, effektusok, animációk vagy multimédia jelenlétét szűrőjelzőként, és mérjen reprezentatív renderelést vagy exportot, mielőtt egy diát megerősített teljesítmény‑szűkítőnek tekintene.