Načíst a aktualizovat informace o prezentaci v Pythonu
Přehled
Aspose.Slides může rozpoznat formát prezentace a přečíst metadata dokumentu, aniž by vytvářela úplný objektový model prezentace. To je užitečné, když potřebujete soubory klasifikovat, vytvořit inventuru nebo prozkoumat vlastnosti před tím, než se rozhodnete načíst a zpracovat obsah prezentace.
Tento článek ukazuje lehkou kontrolu pomocí PresentationFactory a PresentationInfo, a také cílené aktualizace pomocí DocumentProperties.
Zkontrolujte formát prezentace
Pokud již máte načtenou prezentaci, podívejte se na Determine the Original Presentation Format pro detekci po načtení a omezení starších PPT, PPS a POT streamů.
Použijte PresentationFactory.get_presentation_info k prozkoumání souboru, aniž byste vytvořili instanci Presentation. Vlastnost PresentationInfo.load_format hlásí detekovaný formát, např. 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řte lehkou inventuru prezentací
Při zpracování mnoha souborů prezentací můžete potřebovat kompaktní inventuru pro validaci, indexaci 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 přečtení metadat dokumentu. Tento přístup nevytváří instanci Presentation ani nevyžaduje procházení úplným objektovým modelem prezentace.
Rozšířené vlastnosti vystavené DocumentProperties poskytují 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í inventuru. Kombinuje také heading_pairs s titles_of_parts pro 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 spotřebujte počet po sobě jdoucích názvů určených každým heading pair.
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í objektový model prezentace pro přepočet těchto hodnot při tomto volání. Chybějící vlastnosti jsou reprezentovány výchozími hodnotami a uložené hodnoty mohou být neaktuální, pokud aplikace, která naposledy soubor uložila, neaktualizovala jeho dokumentové vlastnosti.
- PPTX: Formát poskytuje rozšířené dokumentové vlastnosti pro počet snímků, poznámek, skrytých snímků, odstavců, slov a multimediálních klipů, stejně jako heading pairs a tituly částí. Dostupnost závisí na tom, které vlastnosti byly zapsány výrobcem dokumentu.
- PPT: Binární formát může uložit odpovídající souhrnné dokumentové vlastnosti. Pokud vlastnost chybí nebo nebyla výrobcem dokumentu obnovena, Aspose.Slides vrátí její uloženou nebo výchozí hodnotu místo výpočtu ze 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, heading‑pair a part‑title mohou být nedostupná a vlastnosti inventáře mohou vracet výchozí hodnoty. Nezpracovávejte nulu nebo prázdnou kolekci jako definitní důkaz, že odpovídající obsah chybí.
Používejte lehký přístup k metadatům pro inventury a předběžné kontroly. Načtěte prezentaci a prozkoumejte její živý objektový model, pokud výsledek musí odrážet změny v paměti nebo pokud potřebujete ověřit skutečný obsah prezentace.
Aktualizujte vlastnosti prezentace
Vlastnosti vrácené metodou PresentationInfo.read_document_properties lze také měnit, aniž by se vytvořil objekt Presentation. Proveďte změny pomocí PresentationInfo.update_document_properties a poté zapište svázanou prezentaci pomocí PresentationInfo.write_binded_presentation.
Následující obrázek ukazuje původní vlastnosti dokumentu PowerPoint prezentace.

Následující příklad změní název a čas posledního uložení a zapíše 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 ukazuje aktualizované vlastnosti dokumentu.

Užitečné odkazy
Pro související bezpečnostní kontroly a nastavení ochrany si prohlédněte 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 fontů a FontsManager.get_fonts pro získání fontů 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 zjistím, zda soubor obsahuje skryté snímky a kolik jich je?
Pokud jsou uložená metadata dokumentu dostačující, přečtěte DocumentProperties.hidden_slides pomocí PresentationFactory.get_presentation_info a PresentationInfo.read_document_properties. Toto je vhodné pro lehkou inventuru. Pokud byla prezentace v paměti upravena, mohou uložená metadata chybět nebo být zastaralá, nebo pokud potřebujete ověřit aktuální hodnoty, projděte Presentation.slides a zkontrolujte vlastnost Slide.hidden každého snímku.
Mohu zjistit, zda jsou použity vlastní rozměry a orientace snímku, a zda se liší od výchozích?
Ano. Načtěte prezentaci a přečtěte Presentation.slide_size. Zkontrolujte 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í datové zdroje?
Ano. Najděte každý Chart a zkontrolujte ChartData.data_source_type. Pro externí sešit přečtěte ChartData.external_workbook_path. Typ datového zdroje a cesta identifikují externí odkaz, ale ověření, zda je cíl dostupný, vyžaduje samostatnou kontrolu zdroje.
Jak mohu posoudit “těžké” snímky, které mohou zpomalovat renderování nebo export do PDF?
Neexistuje jediná vlastnost složitosti. Procházejte Presentation.slides a kolekci BaseSlide.shapes každého snímku. Použijte počet tvarů a přítomnost velkých obrázků, efektů, animací nebo multimédií jako signály, a změřte reprezentativní render nebo export předtím, než považujete snímek za potvrzenou úzkou hranu výkonu.