Správa vlastností prezentace v Pythonu

Úvod

Aspose.Slides podporuje dva typy vlastností dokumentu: Built-in a Custom. Oba tyto typy vlastností lze snadno přistupovat a spravovat pomocí API Aspose.Slides.

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

Vlastnosti dokumentu v PowerPointu

Microsoft PowerPoint 2007 vám umožňuje spravovat vlastnosti dokumentu souborů prezentací. Klikněte na ikonu Office a vyberte Prepare | Properties | Advanced Properties, jak je znázorněno níže:

Výběr položky nabídky Pokročilé vlastnosti
PowerPoint document properties
Po výběru Advanced Properties se zobrazí dialog, ve kterém můžete spravovat vlastnosti dokumentu souboru PowerPoint:
Dialog vlastností
PowerPoint document properties
Dialog Properties Dialog obsahuje karty jako General, Summary, Statistics, Contents a Custom. Tyto karty vám umožňují konfigurovat různé typy informací o souborech PowerPoint. Použijte kartu Custom pro správu vlastních vlastností.

Práce s vlastnostmi dokumentu pomocí Aspose.Slides pro Python přes Java

Jak bylo zmíněno dříve, Aspose.Slides pro Python přes Java podporuje jak Built-in, tak Custom vlastnosti dokumentu. Třída DocumentProperties představuje vlastnosti dokumentu spojené s souborem prezentace.

Použijte Presentation.getDocumentProperties , abyste získali přístup k těmto vlastnostem, jak je popsáno níže.

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

Otevírací heslo obvykle chrání jak obsah prezentace, tak vlastnosti dokumentu. Když je prezentace zašifrována předáním false metodě ProtectionManager.setEncryptDocumentProperties , zůstávají její vlastnosti dokumentu veřejné. Aplikace pak může předat true metodě LoadOptions.setOnlyLoadDocumentProperties , a přečíst veřejná metadata bez zadání otevíracího hesla.

Volba pouze vlastností dokumentu řídí, co Aspose.Slides načte; nic nešifruje. 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.

Následující příklad ověřuje režim načítání pomocí ProtectionManager.isOnlyDocumentPropertiesLoaded , a poté čte vestavěné vlastnosti pomocí Presentation.getDocumentProperties :

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, LoadOptions

load_options = LoadOptions()
load_options.setOnlyLoadDocumentProperties(True)

presentation = Presentation("public-properties-encrypted.pptx", load_options)
try:
    if presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded():
        properties = presentation.getDocumentProperties()

        print("Author: ", properties.getAuthor())
        print("Title: ", properties.getTitle())
        print("Keywords: ", properties.getKeywords())
    else:
        print("The presentation was not loaded in document-properties-only mode.")

finally:
    presentation.dispose()

V tomto režimu není načten obsah snímků. Snímky, předlohy, rozvržení, tvary, média a další objekty prezentace nejsou dostupné. Aplikace by měly vždy zkontrolovat ProtectionManager.isOnlyDocumentPropertiesLoaded , před provedením operace, která vyžaduje kompletní objektový model prezentace.

Aktualizace vlastností šifrované prezentace

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

Následující příklad otevře prezentaci pomocí LoadOptions.setPassword , aktualizuje veřejné vestavěné vlastnosti a uloží výsledek. Poté použije PresentationInfo.isEncrypted , aby ověřil, že šifrování zůstalo zachováno, a znovu otevře veřejná metadata bez hesla pro ověření nových hodnot :

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, LoadOptions, PresentationFactory, SaveFormat

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

load_options = LoadOptions()
load_options.setPassword("open_password")

presentation = Presentation(input_path, load_options)
try:
    presentation.getDocumentProperties().setTitle("Updated Product Roadmap")
    presentation.getDocumentProperties().setKeywords("roadmap, planning, indexed")
    presentation.save(output_path, SaveFormat.Pptx)
finally:
    presentation.dispose()

presentation_info = PresentationFactory.getInstance().getPresentationInfo(output_path)
print("The presentation is encrypted: ", presentation_info.isEncrypted())

metadata_load_options = LoadOptions()
metadata_load_options.setOnlyLoadDocumentProperties(True)

metadata_presentation = Presentation(output_path, metadata_load_options)
try:
    if metadata_presentation.getProtectionManager().isOnlyDocumentPropertiesLoaded():
        print("Title: ", metadata_presentation.getDocumentProperties().getTitle())
        print("Keywords: ", metadata_presentation.getDocumentProperties().getKeywords())
    else:
        print("The presentation was not loaded in document-properties-only mode.")

finally:
    metadata_presentation.dispose()

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

Přístup k vestavěným vlastnostem

Vestavěné vlastnosti poskytované třídou DocumentProperties zahrnují: Creator (Autor), Description, Created (Datum vytvoření), Modified (Datum úpravy), Printed (Datum posledního tisku), LastModifiedBy, Keywords, SharedDoc (Je sdíleno mezi různými tvůrci?), PresentationFormat, Subject a Title.

import jpype
import asposeslides

if not jpife.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, DocumentProperties

# Vytvořte instanci třídy Presentation, která představuje prezentaci
presentation = Presentation("Presentation.pptx")
try:
    # Vytvořte odkaz na objekt DocumentProperties spojený s prezentací
    properties = presentation.getDocumentProperties()

    # Zobrazte vestavěné vlastnosti
    print("Category : ", properties.getCategory())
    print("Current Status : ", properties.getContentStatus())
    print("Creation Date : ", properties.getCreatedTime())
    print("Author : ", properties.getAuthor())
    print("Description : ", properties.getComments())
    print("KeyWords : ", properties.getKeywords())
    print("Last Modified By : ", properties.getLastSavedBy())
    print("Supervisor : ", properties.getManager())
    print("Modified Date : ", properties.getLastSavedTime())
    print("Presentation Format : ", properties.getPresentationFormat())
    print("Last Print Date : ", properties.getLastPrinted())
    print("Is Shared between producers : ", properties.getSharedDoc())
    print("Subject : ", properties.getSubject())
    print("Title : ", properties.getTitle())
finally:
    presentation.dispose()

Úprava vestavěných vlastností

Upravit vestavěné vlastnosti je tak jednoduché jako k nim přistupovat. Použijte odpovídající setter k přiřazení nové hodnoty. Následující příklad mění vestavěné vlastnosti dokumentu pomocí Aspose.Slides pro Python přes Java.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, DocumentProperties

presentation = Presentation("Presentation.pptx")
try:
    # Vytvořte odkaz na objekt DocumentProperties spojený s prezentací
    properties = presentation.getDocumentProperties()

    # Nastavte vestavěné vlastnosti
    properties.setAuthor("Aspose.Slides for Python via Java")
    properties.setTitle("Modifying Presentation Properties")
    properties.setSubject("Aspose Subject")
    properties.setComments("Aspose Description")
    properties.setManager("Aspose Manager")

    # Uložte prezentaci do souboru
    presentation.save("DocProps.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Tento příklad upravuje vestavěné vlastnosti prezentace, což je vidět níže:

Vestavěné vlastnosti dokumentu po úpravě
PowerPoint document properties

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

Aspose.Slides pro Python přes Java také umožňuje vývojářům přidávat vlastní vlastnosti dokumentu do prezentací. Níže uvedený příklad přidá tři vlastní vlastnosti, poté vyhledá název uložený na indexu 2 a tuto vlastnost odstraní, takže uložená prezentace si ponechá dvě z nich. Vlastní vlastnosti jsou indexovány v abecedním pořadí, nikoli v pořadí, v jakém byly přidány.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # Získání vlastností dokumentu
    properties = presentation.getDocumentProperties()

    # Přidávání vlastních vlastností
    properties.set_Item("New Custom", jpype.JInt(12))
    properties.set_Item("My Name", "Mudassir")
    properties.set_Item("Custom", jpype.JInt(124))

    # Získání názvu vlastnosti na konkrétním indexu
    property_name = properties.getCustomPropertyName(2)

    # Odstranění vybrané vlastnosti
    properties.removeCustomProperty(property_name)

    # Ukládání prezentace
    presentation.save("CustomDemo.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()
Přidané vlastní vlastnosti dokumentu
PowerPoint document properties

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

Aspose.Slides pro Python přes Java také umožňuje vývojářům přistupovat k hodnotám vlastních vlastností. Následující příklad ukazuje, jak přistupovat ke všem vlastním vlastnostem v prezentaci a jak je upravit.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, DocumentProperties

presentation = Presentation("Presentation.pptx")
try:
    # Vytvořte odkaz na objekt DocumentProperties spojený s prezentací
    properties = presentation.getDocumentProperties()

    # Přístup a úprava vlastních vlastností
    for i in range(properties.getCountOfCustomProperties()):
        property_name = properties.getCustomPropertyName(i)
        # Zobrazte názvy a hodnoty vlastních vlastností
        print("Custom Property Name : ", property_name)
        print("Custom Property Value : ", properties.get_Item(property_name))

        # Úprava hodnot vlastních vlastností
        properties.set_Item(property_name, f"New Value {i + 1}")

    # Uložte prezentaci do souboru
    presentation.save("CustomDemoModified.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Tento příklad mění vlastní vlastnosti prezentace PPTX . Následující obrázky ukazují vlastní vlastnosti prezentace před a po úpravě:

Vlastní vlastnosti před úpravou
PowerPoint document properties
Vlastní vlastnosti po úpravě
PowerPoint document properties

Pokročilé vlastnosti dokumentu

Dvě nové metody readDocumentProperties a updateDocumentProperties byly přidány do třídy PresentationInfo . Poskytují rychlý přístup k vlastnostem dokumentu a umožňují měnit a aktualizovat vlastnosti bez načítání celé prezentace.

Typický postup načítání vlastností, změny jejich hodnot a aktualizace dokumentu lze implementovat následovně:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory

# Přečtěte informace o prezentaci
presentation_info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx")

# Získejte aktuální vlastnosti
properties = presentation_info.readDocumentProperties()

# Nastavte nové hodnoty polí Autor a Název
properties.setAuthor("New Author")
properties.setTitle("New Title")

# Aktualizujte prezentaci s novými hodnotami
presentation_info.updateDocumentProperties(properties)
presentation_info.writeBindedPresentation("presentation.pptx")

Existuje další způsob, jak použít vlastnosti konkrétní prezentace jako šablonu k aktualizaci vlastností v jiných prezentacích:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory

presentation_info = PresentationFactory.getInstance().getPresentationInfo("template.pptx")
template = presentation_info.readDocumentProperties()

template.setAuthor("Template Author")
template.setTitle("Template Title")
template.setCategory("Template Category")
template.setKeywords("Keyword1, Keyword2, Keyword3")
template.setCompany("Our Company")
template.setComments("Created from template")
template.setContentType("Template Content")
template.setSubject("Template Subject")

for path in ["doc1.pptx", "doc2.odp", "doc3.ppt"]:
    presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
    presentation_to_update.updateDocumentProperties(template)
    presentation_to_update.writeBindedPresentation(path)
import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory

def update_by_template(path, template):
    presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
    presentation_to_update.updateDocumentProperties(template)
    presentation_to_update.writeBindedPresentation(path)

Novou šablonu lze vytvořit od nuly a poté použít k aktualizaci několika prezentací:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import PresentationFactory, DocumentProperties

template = DocumentProperties()

template.setAuthor("Template Author")
template.setTitle("Template Title")
template.setCategory("Template Category")
template.setKeywords("Keyword1, Keyword2, Keyword3")
template.setCompany("Our Company")
template.setComments("Created from template")
template.setContentType("Template Content")
template.setSubject("Template Subject")

for path in ["doc1.pptx", "doc2.odp", "doc3.ppt"]:
    presentation_to_update = PresentationFactory.getInstance().getPresentationInfo(path)
    presentation_to_update.updateDocumentProperties(template)
    presentation_to_update.writeBindedPresentation(path)

Nastavení jazykové kontroly

Aspose.Slides poskytuje metodu PortionFormat.setLanguageId , která vám umožní nastavit jazykovou kontrolu pro dokument PowerPoint. Jazyková kontrola je jazyk, pro který je kontrolována pravopis a gramatika v prezentaci.

Tento Python kód ukazuje, jak nastavit jazykovou kontrolu pro PowerPoint:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, Portion, FontData

pptx_file_name = "presentation.pptx"

presentation = Presentation(pptx_file_name)
try:
    auto_shape = presentation.getSlides().get_Item(0).getShapes().get_Item(0)

    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)
    paragraph.getPortions().clear()

    new_portion = Portion()

    font = FontData("SimSun")
    portion_format = new_portion.getPortionFormat()
    portion_format.setComplexScriptFont(font)
    portion_format.setEastAsianFont(font)
    portion_format.setLatinFont(font)

    portion_format.setLanguageId("zh-CN") # nastavte ID jazykové kontroly

    new_portion.setText("1。")
    paragraph.getPortions().add(new_portion)
finally:
    presentation.dispose()

Nastavení výchozího jazyka

Tento Python kód ukazuje, jak nastavit výchozí jazyk pro celou prezentaci PowerPoint:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, LoadOptions, ShapeType

load_options = LoadOptions()
load_options.setDefaultTextLanguage("en-US")

presentation = Presentation(load_options)
try:
    # Přidá obdélníkový tvar s textem
    shape = presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50)
    shape.getTextFrame().setText("New Text")

    # Kontroluje jazyk první části
    print(shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId())
finally:
    presentation.dispose()

Živý příklad

Vyzkoušejte online aplikaci Aspose.Slides Metadata abyste viděli, jak pracovat s vlastnostmi dokumentu pomocí API Aspose.Slides:

View & Edit PowerPoint Metadata

Často kladené otázky

Jak mohu odstranit 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 ji předtím odstraňovat nebo kontrolovat, protože Aspose.Slides automaticky aktualizuje hodnotu vlastnosti.

Mohu získat přístup k vlastnostem prezentace bez úplného načtení prezentace?

Ano. Použijte PresentationFactory.getPresentationInfo , a poté PresentationInfo.readDocumentProperties , abyste přečetli uložená metadata dokumentu bez vytvoření instance Presentation . Viz Build a Lightweight Presentation Inventory pro kompletní ukázku reportování a omezení specifická pro formát.

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

Ano. Šifrování vlastností dokumentu musí být vypnuto před tím, než byla prezentace zašifrována, a prezentace musí být načtena v režimu pouze vlastností dokumentu.

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

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