Z zarządzanie właściwościami prezentacji w Pythonie

Wstęp

Aspose.Slides obsługuje dwa typy właściwości dokumentu: Wbudowane i Niestandardowe. Oba te typy właściwości mogą być łatwo dostępne i zarządzane przy użyciu API Aspose.Slides.

Aspose.Slides umożliwia pracę z właściwościami dokumentu prezentacji za pośrednictwem klasy DocumentProperties. Instancja tej klasy jest zwracana przez właściwość Presentation.document_properties. Poniższe przykłady pokazują, jak odczytywać, modyfikować i zarządzać tymi właściwościami.

Zarządzanie właściwościami prezentacji

Microsoft PowerPoint udostępnia funkcję umożliwiającą dodawanie niektórych właściwości do plików prezentacji. Te właściwości dokumentu pozwalają przechowywać przydatne informacje razem z dokumentami (plikami prezentacji). Istnieją dwa rodzaje właściwości dokumentu, jak poniżej

  • Właściwości systemowe (wbudowane)
  • Właściwości definiowane przez użytkownika (niestandardowe)

Wbudowane właściwości zawierają ogólne informacje o dokumencie, takie jak tytuł dokumentu, nazwisko autora, statystyki dokumentu i podobne. Niestandardowe właściwości to te definiowane przez użytkowników jako pary Nazwa/Wartość, gdzie zarówno nazwa, jak i wartość są określane przez użytkownika. Korzystając z Aspose.Slides for Python via .NET, programiści mogą uzyskać dostęp i modyfikować wartości wbudowanych oraz niestandardowych właściwości. Microsoft PowerPoint 2007 umożliwia zarządzanie właściwościami dokumentu plików prezentacji. Wystarczy kliknąć ikonę Office, a następnie pozycję menu Prepare | Properties | Advanced Properties w Microsoft PowerPoint 2007. Po wybraniu pozycji menu Advanced Properties pojawi się okno dialogowe umożliwiające zarządzanie właściwościami dokumentu pliku PowerPoint. W Properties Dialog widać wiele kart, takich jak General, Summary, Statistics, Contents i Custom. Wszystkie te karty pozwalają konfigurować różne rodzaje informacji związane z plikami PowerPoint. Karta Custom służy do zarządzania niestandardowymi właściwościami plików PowerPoint.

Odczyt publicznych właściwości z zaszyfrowanej prezentacji

Hasło otwierające zazwyczaj chroni zarówno zawartość prezentacji, jak i właściwości dokumentu. Gdy prezentacja jest zaszyfrowana z ustawieniem ProtectionManager.encrypt_document_properties na False, jej właściwości dokumentu pozostają publiczne. Aplikacja może wtedy ustawić LoadOptions.only_load_document_properties na True i odczytać publiczne metadane bez podawania hasła otwierającego.

only_load_document_properties kontroluje, co Aspose.Slides ładuje; nie odszyfrowuje niczego. Jeśli właściwości były objęte szyfrowaniem, ich ładowanie bez hasła kończy się niepowodzeniem. Jeśli prezentacja nie jest zaszyfrowana, opcja jest ignorowana i ładowana jest cała prezentacja.

Następujący przykład weryfikuje tryb ładowania za pomocą ProtectionManager.is_only_document_properties_loaded oraz odczytuje wbudowane właściwości za 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:
        properties = presentation.document_properties

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

W tym trybie zawartość slajdów nie jest ładowana. Slajdy, szablony, układy, kształty, multimedia i inne obiekty prezentacji są niedostępne. Aplikacje powinny zawsze sprawdzać is_only_document_properties_loaded przed wykonaniem operacji wymagającej pełnego modelu obiektowego prezentacji.

Aktualizacja właściwości zaszyfrowanej prezentacji

Dla zaszyfrowanego pliku PPTX, prezentacja załadowana z only_load_document_properties ma służyć do odczytu publicznych metadanych. Aspose.Slides nie może zapisać zmienionych właściwości z tego obiektu zawierającego tylko metadane, ponieważ publiczne właściwości muszą pozostać zgodne z odpowiadającymi danymi wewnątrz zaszyfrowanej prezentacji. Aktualizacja wymaga więc poprawnego hasła otwierającego i pełnego załadowania.

Następujący przykład otwiera prezentację za pomocą LoadOptions.password, aktualizuje publiczne wbudowane właściwości i zapisuje wynik. Następnie używa PresentationInfo.is_encrypted, aby zweryfikować, że szyfrowanie zostało zachowane, i ponownie otwiera publiczne metadane bez hasła w celu sprawdzenia nowych wartości:

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:
    presentation.document_properties.title = "Updated Product Roadmap"
    presentation.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.")

Jeśli aplikacja nie ma uprawnień do odszyfrowania lub załadowania zawartości prezentacji, musi traktować publiczne właściwości zaszyfrowanego pliku PPTX jako tylko do odczytu.

Dostęp do wbudowanych właściwości

Te właściwości udostępniane przez obiekt IDocumentProperties obejmują: Creator(Author), Description, Keywords, Created (Data utworzenia), Modified (Data modyfikacji), Printed (Data ostatniego wydruku), LastModifiedBy, Keywords, SharedDoc (Czy współdzielone między różnymi producentami?), PresentationFormat, Subject i Title

import aspose.slides as slides

# Utwórz instancję klasy Presentation, która reprezentuje prezentację
with slides.Presentation("AccessBuiltin Properties.pptx") as pres:
    # Utwórz odwołanie do obiektu powiązanego z prezentacją
    documentProperties = pres.document_properties

    # Wyświetl wbudowane właściwości
    print("category : " + documentProperties.category)
    print("Current Status : " + documentProperties.content_status)
    print("Creation Date : " + str(documentProperties.created_time))
    print("Author : " + documentProperties.author)
    print("Description : " + documentProperties.comments)
    print("KeyWords : " + documentProperties.keywords)
    print("Last Modified By : " + documentProperties.last_saved_by)
    print("Supervisor : " + documentProperties.manager)
    print("Modified Date : " + str(documentProperties.last_saved_time))
    print("Presentation Format : " + documentProperties.presentation_format)
    print("Last Print Date : " + str(documentProperties.last_printed))
    print("Is Shared between producers : " + str(documentProperties.shared_doc))
    print("Subject : " + documentProperties.subject)
    print("Title : " + documentProperties.title)

Modyfikacja wbudowanych właściwości

Modyfikacja wbudowanych właściwości plików prezentacji jest tak prosta jak ich dostęp. Można po prostu przypisać wartość tekstową do dowolnej wybranej właściwości i wartość tej właściwości zostanie zmieniona. W poniższym przykładzie pokazaliśmy, jak możemy zmodyfikować wbudowane właściwości dokumentu pliku prezentacji.

import aspose.slides as slides

# Utwórz instancję klasy Presentation, która reprezentuje prezentację
with slides.Presentation("ModifyBuiltinProperties.pptx") as presentation:
    # Utwórz odwołanie do obiektu powiązanego z prezentacją
    documentProperties = presentation.document_properties

    # Ustaw wbudowane właściwości
    documentProperties.author = "Aspose.Slides for .NET"
    documentProperties.title = "Modifying Presentation Properties"
    documentProperties.subject = "Aspose Subject"
    documentProperties.comments = "Aspose Description"
    documentProperties.manager = "Aspose Manager"

    # Zapisz prezentację do pliku
    presentation.save("DocumentProperties_out.pptx", slides.export.SaveFormat.PPTX)

Dodawanie niestandardowych właściwości prezentacji

Aspose.Slides for Python via .NET umożliwia również programistom dodawanie niestandardowych wartości dla właściwości dokumentu prezentacji. Poniżej podano przykład pokazujący, jak ustawić niestandardowe właściwości dla prezentacji.

import aspose.slides as slides

# Utwórz instancję klasy Presentation
with slides.Presentation() as presentation:
    # Pobieranie właściwości dokumentu
    documentProperties = presentation.document_properties

    # Dodawanie właściwości niestandardowych
    documentProperties.set_custom_property_value("New Custom", 12)
    documentProperties.set_custom_property_value("My Nam", "Mudassir")
    documentProperties.set_custom_property_value("Custom", 124)

    # Pobieranie nazwy właściwości pod określonym indeksem
    getPropertyName = documentProperties.get_custom_property_name(2)

    # Usuwanie wybranej właściwości
    documentProperties.remove_custom_property(getPropertyName)

    # Zapisywanie prezentacji
    presentation.save("CustomDocumentProperties_out.pptx", slides.export.SaveFormat.PPTX)

Dostęp i modyfikacja niestandardowych właściwości

Aspose.Slides for Python via .NET umożliwia także programistom dostęp do wartości niestandardowych właściwości. Poniżej podano przykład, który pokazuje, jak można uzyskać dostęp i modyfikować wszystkie te niestandardowe właściwości dla prezentacji.

import aspose.slides as slides

# Utwórz instancję klasy Presentation, która reprezentuje plik PPTX
with slides.Presentation("AccessModifyingProperties.pptx") as presentation:
    # Utwórz odwołanie do obiektu document_properties powiązanego z prezentacją
    documentProperties = presentation.document_properties

    # Uzyskaj dostęp i modyfikuj właściwości niestandardowe
    for i in range(documentProperties.count_of_custom_properties):
        property_name = documentProperties.get_custom_property_name(i)

        # Wyświetl nazwy i wartości właściwości niestandardowych
        property_value = [""]
        documentProperties.get_custom_property_value(property_name, property_value)
        print("Custom Property Name : " + property_name)
        print("Custom Property Value : " + property_value[0])

        # Modyfikuj wartości właściwości niestandardowych
        documentProperties.set_custom_property_value(property_name, "New Value " + str(i + 1))
    # Zapisz prezentację do pliku
    presentation.save("CustomDemoModified_out.pptx", slides.export.SaveFormat.PPTX)

get_custom_property_value zwraca wartość poprzez jednowymiarową listę przekazaną jako drugi argument, a przechowywana wartość jest rzutowana na typ elementu już znajdującego się na tej liście. Powyższy przykład używa [""], więc odczytuje właściwości jako ciągi znaków; aby odczytać właściwość przechowywaną jako liczba, przekaż numeryczny placeholder, np. [0] — w przeciwnym razie wywołanie zgłasza InvalidCastException.

Ustaw język korekty

Aspose.Slides udostępnia właściwość Language_Id (udostępnianą przez klasę PortionFormat), aby umożliwić ustawienie języka korekty dla dokumentu PowerPoint. Język korekty to język, dla którego sprawdzane są pisownia i gramatyka w PowerPoint.

Ten kod w Pythonie pokazuje, jak ustawić język korekty dla PowerPoint:

import aspose.slides as slides

with slides.Presentation("SetProofingLanguage.pptx") as pres:
    auto_shape = pres.slides[0].shapes[0]
    paragraph = auto_shape.text_frame.paragraphs[0]
    paragraph.portions.clear()

    new_portion = slides.Portion()
    font = slides.FontData("SimSun")
    portion_format = new_portion.portion_format
    portion_format.complex_script_font = font
    portion_format.east_asian_font = font
    portion_format.latin_font = font

    # ustaw Id języka korekty
    portion_format.language_id = "zh-CN"
    new_portion.text = "1。"

    paragraph.portions.add(new_portion)

Ustaw domyślny język

Ten kod w Pythonie pokazuje, jak ustawić domyślny język dla całej prezentacji PowerPoint:

import aspose.slides as slides

load_options = slides.LoadOptions()
load_options.default_text_language = "en_US"

with slides.Presentation(load_options) as pres:
    shp = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 50, 50, 150, 150)
    text_frame = shp.text_frame
    text_frame.text = "New Text"

    print(text_frame.paragraphs[0].portions[0].portion_format.language_id)

Przykład na żywo

Wypróbuj aplikację online Aspose.Slides Metadata aby zobaczyć, jak pracować z właściwościami dokumentu za pomocą API Aspose.Slides:

Zobacz i edytuj metadane PowerPoint

FAQ

Jak mogę usunąć wbudowaną właściwość z prezentacji?

Wbudowane właściwości są integralną częścią prezentacji i nie mogą być całkowicie usunięte. Można jednak zmienić ich wartości lub ustawić je jako puste, o ile pozwala na to konkretna właściwość.

Co się stanie, jeśli dodam niestandardową właściwość, która już istnieje?

Jeśli dodasz niestandardową właściwość, która już istnieje, jej bieżąca wartość zostanie nadpisana nową. Nie musisz usuwać ani sprawdzać właściwości wcześniej, ponieważ Aspose.Slides automatycznie aktualizuje wartość właściwości.

Czy mogę uzyskać dostęp do właściwości prezentacji bez pełnego ładowania prezentacji?

Tak. Użyj PresentationFactory.get_presentation_info oraz PresentationInfo.read_document_properties, aby odczytać przechowywane metadane dokumentu bez tworzenia instancji Presentation. Zobacz Build a Lightweight Presentation Inventory po pełny przykład raportowania i ograniczenia specyficzne dla formatu.

Czy mogę odczytać publiczne właściwości zaszyfrowanej prezentacji bez hasła otwierającego?

Tak. Prezentacja musi być zaszyfrowana z ustawieniem encrypt_document_properties na False, a następnie załadowana z only_load_document_properties ustawionym na True.

Czy mogę zaktualizować zaszyfrowany plik PPTX w trybie tylko-właściwości-dokumentu?

Nie. Publiczne i zaszyfrowane dane właściwości muszą pozostawać zgodne, więc aktualizacja zaszyfrowanego pliku PPTX wymaga pełnego załadowania prezentacji przy użyciu prawidłowego hasła otwierającego.