Správa vlastností prezentace pomocí Pythonu

Úvod

Aspose.Slides for Python via .NET podporuje vestavěné a vlastní vlastnosti dokumentu. Použijte tyto vlastnosti ke čtení a aktualizaci metadat prezentace, jako je autor, název a uživatelem definované hodnoty.

Aspose.Slides vám umožňuje pracovat s vlastnostmi dokumentu prezentace pomocí třídy DocumentProperties . Instance této třídy je vrácena pomocí Presentation.document_properties. Následující příklady ukazují, jak číst, měnit a spravovat tyto vlastnosti.

Správa vlastností prezentace

Vlastnosti dokumentu ukládají popisné informace vedle obsahu prezentace. Patří do dvou kategorií:

  • Vestavěné vlastnosti obsahují standardní metadata, jako je název, autor a statistiky dokumentu.
  • Vlastní vlastnosti ukládají páry název/hodnota definované uživatelem.

Aspose.Slides for Python via .NET poskytuje přístup k oběma kategoriím. V PowerPointu vyberte File → Info → Properties → Advanced Properties pro prohlížení metadat dokumentu. Dialog seskupuje informace do záložek jako Summary, Statistics, Contents a Custom. Použijte záložku Custom pro správu uživatelem definovaných vlastností.

Čtení veřejných vlastností z šifrované prezentace

Otevírací heslo obvykle chrání jak obsah prezentace, tak vlastnosti dokumentu. Když je prezentace šifrována pomocí ProtectionManager.encrypt_document_properties nastaveným na False, její vlastnosti dokumentu zůstávají veřejné. Aplikace pak může nastavit LoadOptions.only_load_document_properties na True a číst veřejná metadata bez zadání otevíracího hesla.

LoadOptions.only_load_document_properties řídí, co Aspose.Slides načítá; neodšifruje nic. Pokud byly vlastnosti zahrnuty do šifrování, načtení bez hesla selže. Pokud prezentace není šifrována, volba se ignoruje a načte se celá prezentace.

Příklad vyžaduje šifrovanou prezentaci, jejíž vlastnosti dokumentu byly ponechány veřejné. Ověřuje režim načítání pomocí ProtectionManager.is_only_document_properties_loaded a pak čte vestavěné vlastnosti pomocí Presentation.document_properties:

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.only_load_document_properties = True

with slides.Presentation("public-properties-encrypted.pptx", load_options) as presentation:
    if presentation.protection_manager.is_only_document_properties_loaded:
        document_properties = presentation.document_properties

        print("Author: " + document_properties.author)
        print("Title: " + document_properties.title)
        print("Keywords: " + document_properties.keywords)
    else:
        print("The presentation was not loaded in document-properties-only mode.")

V tomto režimu se nenačítá obsah snímků. Snímky, hlavní snímky, rozvržení, tvary, média a další objekty prezentace jsou nedostupné. Aplikace by měly vždy zkontrolovat ProtectionManager.is_only_document_properties_loaded, než provedou operaci vyžadující kompletní model objektů prezentace.

Aktualizace vlastností šifrované prezentace

Pro šifrovaný soubor PPTX je prezentace načtená pomocí LoadOptions.only_load_document_properties určena ke čtení veřejných metadat. Aspose.Slides nemůže uložit změněné vlastnosti z tohoto objektu pouze s metadaty, protože veřejné vlastnosti musí zůstat v souladu s odpovídajícími daty uvnitř šifrované prezentace. Aktualizace proto vyžaduje správné otevírací heslo a kompletní načtení.

Příklad vyžaduje šifrovanou PPTX prezentaci s veřejnými vlastnostmi dokumentu a známým otevíracím heslem. Otevře kompletní prezentaci pomocí LoadOptions.password, aktualizuje veřejné vestavěné vlastnosti a uloží výsledek. Poté použije PresentationInfo.is_encrypted k ověření zachování šifrování a znovu otevře veřejná metadata bez hesla k ověření nových hodnot:

import aspose.slides as slides

input_path = "public-properties-encrypted.pptx"
output_path = "updated-public-properties-encrypted.pptx"

load_options = slides.LoadOptions()
load_options.password = "open_password"

with slides.Presentation(input_path, load_options) as presentation:
    document_properties = presentation.document_properties
    document_properties.title = "Updated Product Roadmap"
    document_properties.keywords = "roadmap, planning, indexed"
    
    presentation.save(output_path, slides.export.SaveFormat.PPTX)

presentation_info = slides.PresentationFactory.instance.get_presentation_info(output_path)
print("The presentation is encrypted: " + str(presentation_info.is_encrypted))

metadata_load_options = slides.LoadOptions()
metadata_load_options.only_load_document_properties = True

with slides.Presentation(output_path, metadata_load_options) as metadata_presentation:
    if metadata_presentation.protection_manager.is_only_document_properties_loaded:
        print("Title: " + metadata_presentation.document_properties.title)
        print("Keywords: " + metadata_presentation.document_properties.keywords)
    else:
        print("The presentation was not loaded in document-properties-only mode.")

Pokud aplikace nemá povoleno dešifrovat nebo načíst obsah prezentace, musí považovat veřejné vlastnosti šifrovaného souboru PPTX za pouze ke čtení.

Přístup k vestavěným vlastnostem

Třída DocumentProperties zpřístupňuje vestavěná metadata prostřednictvím typovaných vlastností, včetně DocumentProperties.author, DocumentProperties.title, a DocumentProperties.created_time. Tento příklad otevře existující prezentaci a vypíše její uložená metadata do konzole. Hodnoty závisí na vstupní prezentaci; některá pole mohou být prázdná.

import aspose.slides as slides

with slides.Presentation("AccessBuiltInProperties.pptx") as presentation:
    document_properties = presentation.document_properties

    print("Category:", document_properties.category)
    print("Content status:", document_properties.content_status)
    print("Creation date:", document_properties.created_time)
    print("Author:", document_properties.author)
    print("Comments:", document_properties.comments)
    print("Keywords:", document_properties.keywords)
    print("Last modified by:", document_properties.last_saved_by)
    print("Manager:", document_properties.manager)
    print("Modified date:", document_properties.last_saved_time)
    print("Presentation format:", document_properties.presentation_format)
    print("Last print date:", document_properties.last_printed)
    print("Is shared between producers:", document_properties.shared_doc)
    print("Subject:", document_properties.subject)
    print("Title:", document_properties.title)

Úprava vestavěných vlastností

Pro aktualizaci vestavěných metadat přiřaďte hodnoty zapisovatelným vlastnostem zpřístupněným prostřednictvím Presentation.document_properties. Tento příklad otevře existující prezentaci, nastaví DocumentProperties.author, DocumentProperties.title, DocumentProperties.subject, DocumentProperties.comments, a DocumentProperties.manager, poté uloží aktualizovanou prezentaci pomocí Presentation.save. Uložený PPTX obsahuje nová metadata.

import aspose.slides as slides

with slides.Presentation("ModifyBuiltInProperties.pptx") as presentation:
    document_properties = presentation.document_properties

    document_properties.author = "Aspose.Slides for Python via .NET"
    document_properties.title = "Manage PowerPoint Presentation Properties"
    document_properties.subject = "Modify Built-in Properties"
    document_properties.comments = "Aspose description"
    document_properties.manager = "Aspose manager"

    presentation.save("DocumentProperties_output.pptx", slides.export.SaveFormat.PPTX)

DocumentProperties.hyperlink_base ukládá úroveň dokumentu jako základ pro relativní hypertextové odkazy. To je užitečné při přesunu prezentace a jejích propojených souborů na jiné místo. Je to oddělené od Hyperlink.external_url jednotlivého odkazu: změna základu nepřepíše uložené adresy odkazů ani nezmění absolutní cíle.

Příklad vyžaduje prezentaci obsahující jak relativní odkaz, například target.html, tak absolutní odkaz na soubor nebo web. Přečte existující základ, přiřadí novou adresu základu a uloží a znovu otevře prezentaci pro kontrolu hodnoty. Poté vymaže základ pomocí "" a ověří prázdnou hodnotu v samostatném uloženém souboru. Nahraďte ukázkovou adresu základu umístěním vašich propojených souborů.

import aspose.slides as slides

with slides.Presentation("hyperlinks.pptx") as presentation:
    print("Original base:", presentation.document_properties.hyperlink_base)

    new_base = "https://example.com/new/"
    presentation.document_properties.hyperlink_base = new_base
    presentation.save("hyperlinks-updated.pptx", slides.export.SaveFormat.PPTX)

with slides.Presentation("hyperlinks-updated.pptx") as updated_presentation:
    print("Base preserved:", updated_presentation.document_properties.hyperlink_base == new_base)

    updated_presentation.document_properties.hyperlink_base = ""
    updated_presentation.save("hyperlinks-cleared.pptx", slides.export.SaveFormat.PPTX)

with slides.Presentation("hyperlinks-cleared.pptx") as cleared_presentation:
    print("Base cleared:", cleared_presentation.document_properties.hyperlink_base == "")

Obě ověřovací zprávy by měly vytisknout True. Vymazání základu ponechá jednotlivé adresy odkazů nedotčeny.

Relativní odkaz na target.pptx otevřel old/target.pptx, když základ ukazoval na složku old. Po změně základu na složku new, uložení a opětovném otevření prezentace stejný odkaz otevřel new/target.pptx. Absolutní odkaz nadále otevíral stejný soubor. Otestujte své relativní odkazy v PowerPointu před a po přesunu prezentace nebo změně jejího základu.

Přidání vlastních vlastností prezentace

Vlastní vlastnosti ukládají metadata, která nemají odpovídající vestavěné pole. Metoda DocumentProperties.set_custom_property_value vám umožní přiřadit hodnotu podle názvu vlastnosti. Tento příklad vytvoří prezentaci, přidá dvě textové hodnoty a celočíselnou verzi, a uloží prezentaci pomocí Presentation.save. Přiřazení hodnoty k existujícímu názvu nahradí hodnotu této vlastnosti.

import aspose.slides as slides

with slides.Presentation() as presentation:
    document_properties = presentation.document_properties

    document_properties.set_custom_property_value("Reviewed by", "John Smith")
    document_properties.set_custom_property_value("Confidentiality level", "Internal")
    document_properties.set_custom_property_value("Document version", 2)

    presentation.save("CustomDocumentProperties_output.pptx", slides.export.SaveFormat.PPTX)

Přístup a úprava vlastních vlastností

Tento příklad otevře prezentaci obsahující vlastní vlastnosti a použije DocumentProperties.count_of_custom_properties k iteraci přes ně. DocumentProperties.get_custom_property_name přijímá nulový index a vrací název použitého DocumentProperties.set_custom_property_value. Příklad vyžaduje prezentaci, jejíž vlastní vlastnosti jsou všechny řetězce. Vytiskne každý původní název a hodnotu, nahradí každou hodnotu číslovaným řetězcem a uloží změny. Pokud neexistují žádné vlastní vlastnosti, smyčka neprovedení žádné změny.

import aspose.slides as slides

with slides.Presentation("AccessAndModifyProperties.pptx") as presentation:
    document_properties = presentation.document_properties

    for i in range(document_properties.count_of_custom_properties):
        property_name = document_properties.get_custom_property_name(i)
        property_value = [""]
        document_properties.get_custom_property_value(property_name, property_value)

        print("Custom property name:", property_name)
        print("Custom property value:", property_value[0])

        document_properties.set_custom_property_value(property_name, "New Value " + str(i + 1))

    presentation.save("CustomProperties_output.pptx", slides.export.SaveFormat.PPTX)

DocumentProperties.get_custom_property_value vrací hodnotu pomocí jednoprvkové seznamu předaného jako druhý argument. Zástupný prvek musí odpovídat typu uložené vlastnosti: použijte [""] pro řetězec nebo [0] pro celé číslo. Nesprávný typ vyvolá InvalidCastException; vyberte zástupný prvek podle vašeho schématu vlastních vlastností.

Živý příklad

Vyzkoušejte aplikaci Zobrazit a upravit metadata PowerPoint online a zjistěte, jak pracovat s vlastnostmi dokumentu pomocí Aspose.Slides API:

Zobrazit a upravit metadata PowerPoint

Často kladené otázky

Jak mohu odebrat vestavěnou vlastnost z prezentace?

Vestavěné vlastnosti jsou nedílnou součástí prezentace a nelze je zcela odstranit. Můžete však změnit jejich hodnoty nebo je nastavit na prázdné, pokud to konkrétní vlastnost umožňuje.

Co se stane, když přidám vlastní vlastnost, která již existuje?

Pokud přidáte vlastní vlastnost, která již existuje, její stávající hodnota bude přepsána novou. Nemusíte vlastnost předtím odstraňovat nebo kontrolovat, protože Aspose.Slides automaticky aktualizuje hodnotu vlastnosti.

Mohu přistupovat k vlastnostem prezentace bez kompletního načtení prezentace?

Ano. Použijte PresentationFactory.get_presentation_info a poté PresentationInfo.read_document_properties, abyste načetli uložená metadata dokumentu bez vytváření instance Presentation. Viz Vytvořit odlehčený inventář prezentací pro kompletní příklad reportování a omezení specifická pro formát.

Mohu číst veřejné vlastnosti šifrované prezentace bez jejího otevíracího hesla?

Ano. Prezentace musí být šifrována pomocí ProtectionManager.encrypt_document_properties nastaveného na False a musí být načtena pomocí LoadOptions.only_load_document_properties nastaveného na True.

Mohu aktualizovat šifrovaný PPTX soubor v režimu pouze vlastnosti dokumentu?

Ne. Veřejná a šifrovaná data vlastností musí zůstat konzistentní, takže aktualizace šifrovaného PPTX souboru vyžaduje načtení kompletní prezentace se správným otevíracím heslem.