Načíst a aktualizovat informace o prezentaci v Pythonu
Přehled
Aspose.Slides může rozpoznat formát prezentace a načíst její metadata dokumentu, aniž by vytvořil kompletní model objektů prezentace. To je užitečné, když potřebujete soubory klasifikovat, vytvořit inventář nebo prověřit vlastnosti před tím, než se rozhodnete načíst a zpracovat obsah prezentace.
Tento článek ukazuje lehkou inspekci pomocí PresentationFactory a PresentationInfo, stejně jako cílené aktualizace pomocí DocumentProperties.
Zkontrolovat formát prezentace
Použijte PresentationFactory.get_presentation_info k prozkoumání souboru, aniž byste vytvořili instanci Presentation. Vlastnost PresentationInfo.load_format uvádí zjištěný formát, například PPTX, PPT nebo ODP.
import aspose.slides as slides
file_names = ["pres.pptx", "pres.ppt", "pres.odp"]
for file_name in file_names:
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_name)
print(f"{file_name}: {presentation_info.load_format}")
Vytvořit odlehčený inventář prezentací
Když zpracováváte mnoho souborů prezentací, můžete potřebovat kompaktní inventář pro validaci, indexování nebo systém správy dokumentů. V tomto scénáři použijte PresentationFactory.get_presentation_info k získání objektu PresentationInfo, a poté zavolejte PresentationInfo.read_document_properties k načtení metadat dokumentu. Tento přístup nevytváří instanci Presentation ani nevyžaduje procházet kompletní model objektů prezentace.
Rozšířené vlastnosti poskytované třídou DocumentProperties zahrnují následující hodnoty inventáře:
| Vlastnost | Hodnota inventáře |
|---|---|
| slides | Celkový počet snímků. |
| hidden_slides | Počet skrytých snímků. |
| notes | Počet snímků obsahujících poznámky. |
| paragraphs | Celkový počet odstavců, pokud jsou k dispozici. |
| words | Celkový počet slov. |
| multimedia_clips | Celkový počet audio a video klipů. |
Následující příklad načte tyto hodnoty, aniž by vytvořil objekt Presentation, a vytiskne kompaktní inventář. Kombinuje také heading_pairs s titles_of_parts k zobrazení skupin obsahu, jako jsou písma, motivy a názvy snímků.
import os
import aspose.slides as slides
file_path = "sample.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(file_path)
document_properties = presentation_info.read_document_properties()
print(f"File: {os.path.basename(file_path)}")
print(f"Format: {presentation_info.load_format}")
print(f"Title: {document_properties.title}")
print(f"Author: {document_properties.author}")
print("Statistics:")
print(f" Slides: {document_properties.slides}")
print(f" Hidden slides: {document_properties.hidden_slides}")
print(f" Slides with notes: {document_properties.notes}")
print(f" Paragraphs: {document_properties.paragraphs}")
print(f" Words: {document_properties.words}")
print(f" Multimedia clips: {document_properties.multimedia_clips}")
heading_pairs = document_properties.heading_pairs or []
titles_of_parts = document_properties.titles_of_parts or []
part_index = 0
if not heading_pairs or not titles_of_parts:
print("Content groups: not available")
else:
print("Content groups:")
for heading_pair in heading_pairs:
print(f" {heading_pair.name} ({heading_pair.count})")
for _ in range(heading_pair.count):
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
Každý HeadingPair poskytuje název skupiny a počet položek v této skupině. DocumentProperties.titles_of_parts je plochá, uspořádaná kolekce, takže zpracujte počet po sobě jdoucích názvů určených každým párem záhlaví.
Uložená metadata a omezení formátu
Vlastnosti inventáře vrácené metodou PresentationInfo.read_document_properties odrážejí metadata dostupná ve zdrojovém dokumentu. Aspose.Slides nenačítá a neprochází model objektů prezentace k přepočítání těchto hodnot pro tento volání. Chybějící vlastnosti jsou reprezentovány výchozími hodnotami a uložené hodnoty mohou být zastaralé, pokud aplikace, která soubor naposledy uložila, neaktualizovala jeho dokumentové vlastnosti.
- PPTX: Formát poskytuje rozšířené vlastnosti dokumentu pro počty snímků, poznámek, skrytých snímků, odstavců, slov a multimédií, stejně jako páry záhlaví a názvy částí. Dostupnost závisí na tom, které vlastnosti byly zapsány producentem dokumentu.
- PPT: Binární formát může ukládat odpovídající vlastnosti souhrnu dokumentu. Pokud je vlastnost nepřítomna nebo nebyla producentem dokumentu aktualizována, Aspose.Slides vrátí její uloženou nebo výchozí hodnotu místo výpočtu z obsahu snímků.
- ODP: Metadata OpenDocument poskytují obecné statistiky dokumentu, jako jsou počty stránek, odstavců a slov, ale tyto hodnoty neodpovídají všem rozšířeným vlastnostem specifickým pro PowerPoint. Metadata pro skryté snímky, poznámkové snímky, multimédia, páry záhlaví a názvy částí mohou být nedostupná a vlastnosti inventáře mohou vracet výchozí hodnoty. Nerozlišujte nulovou hodnotu nebo prázdnou kolekci jako definitivní důkaz, že odpovídající obsah chybí.
Používejte lehký přístup k metadatům pro inventáře a předběžné kontroly. Načtěte prezentaci a prozkoumejte její živý model objektů, když výsledek musí odrážet změny v paměti nebo když potřebujete ověřit skutečný obsah prezentace.
Aktualizovat vlastnosti prezentace
Vlastnosti vrácené metodou PresentationInfo.read_document_properties lze také změnit, aniž byste vytvořili instanci Presentation. Aplikujte změny pomocí PresentationInfo.update_document_properties a poté zapište svázanou prezentaci pomocí PresentationInfo.write_binded_presentation.
Následující obrázek zobrazuje původní vlastnosti dokumentu.

Následující příklad mění název a čas posledního uložení a zapisuje výsledek do nového souboru:
import datetime
import aspose.slides as slides
source_file = "sample.pptx"
output_file = "sample_with_updated_properties.pptx"
presentation_info = slides.PresentationFactory.instance.get_presentation_info(source_file)
document_properties = presentation_info.read_document_properties()
document_properties.title = "Quarterly sales report"
document_properties.last_saved_time = datetime.datetime.now(datetime.timezone.utc)
presentation_info.update_document_properties(document_properties)
with open(output_file, "wb") as output_stream:
presentation_info.write_binded_presentation(output_stream)
Následující obrázek zobrazuje aktualizované vlastnosti dokumentu.

Užitečné odkazy
Pro související bezpečnostní kontroly a nastavení ochrany viz následující články:
Často kladené otázky
Jak mohu zkontrolovat, zda jsou písma vložena a která to jsou?
Načtěte prezentaci a použijte Presentation.fonts_manager. Zavolejte FontsManager.get_embedded_fonts pro získání vložených písem a FontsManager.get_fonts pro získání písem použitých v prezentaci. Porovnejte oba výsledky a najděte písma, která jsou potřebná pro vykreslení, ale nejsou vložena.
Jak rychle zjistit, zda soubor obsahuje skryté snímky a kolik jich je?
Když jsou uložená metadata dokumentu dostačující, přečtěte DocumentProperties.hidden_slides přes PresentationFactory.get_presentation_info a PresentationInfo.read_document_properties. To je vhodné pro lehký inventář. Pokud byla prezentace v paměti upravena, uložená metadata mohou chybět nebo být zastaralá, nebo potřebujete ověřit živé hodnoty – iterujte přes Presentation.slides a zkontrolujte vlastnost Slide.hidden každého snímku.
Mohu zjistit, zda je použita vlastní velikost snímku a orientace a zda se liší od výchozích?
Ano. Načtěte prezentaci a přečtěte Presentation.slide_size. Prozkoumejte SlideSize.type, SlideSize.size a SlideSize.orientation a porovnejte aktuální nastavení s očekávaným přednastavením a rozměry.
Existuje rychlý způsob, jak zjistit, zda grafy odkazují na externí zdroje dat?
Ano. Najděte každý Chart a prozkoumejte ChartData.data_source_type. Pro externí sešit přečtěte ChartData.external_workbook_path. Typ zdroje dat a cesta identifikují externí odkaz, ale ověření, zda je cíl dostupný, vyžaduje samostatnou kontrolu zdroje.
Jak mohu posoudit „tíživé“ snímky, které mohou zpomalovat vykreslování nebo export do PDF?
Neexistuje jediná vlastnost komplexnosti. Procházejte Presentation.slides a kolekci BaseSlide.shapes každého snímku. Používejte počty tvarů a přítomnost velkých obrázků, efektů, animací nebo multimédií jako signály ke skenování a změřte reprezentativní vykreslení nebo export, než označíte snímek jako potvrzený úzký hrdlo výkonu.