Ogranicz edycję prezentacji przy użyciu blokad kształtów w Pythonie

Tło

Typowym zastosowaniem Aspose.Slides for Python via .NET jest tworzenie, aktualizowanie i zapisywanie prezentacji PowerPoint (PPTX) w ramach zautomatyzowanego przepływu pracy. Gdy użytkownicy otrzymują te prezentacje, ograniczenie zmian kształtów może pomóc zachować zamierzony układ i treść.

Ten artykuł wyjaśnia, jak kształty są organizowane na slajdach oraz jak zastosować i usunąć blokady kształtów w prezentacji PPTX. Te blokady pozwalają ograniczyć określone operacje edycyjne na pojedynczych kształtach.

Kompozycja slajdu

Slajd prezentacji składa się z elementów takich jak autokształty, tabele, obiekty OLE, grupowane kształty, ramki obrazów, ramki wideo, łączniki oraz inne elementy używane do tworzenia prezentacji. W Aspose.Slides for Python via .NET każdy element na slajdzie jest reprezentowany przez obiekt dziedziczący po klasie Shape .

Różne typy kształtów udostępniają różne opcje blokowania. Klasa BaseShapeLock jest klasą bazową dla blokad kształtów. Aspose.Slides for Python via .NET udostępnia następujące klasy blokad:

Aby zastosować blokady w całej Presentation, przeglądnij jej slajdy i ustaw odpowiednie blokady na każdym obsługiwanym kształcie.

Zastosowanie i usunięcie ochrony

Blokady kształtów ograniczają operacje takie jak zaznaczanie, przemieszczanie i zmienianie rozmiaru kształtów. Nie powodują, że cała prezentacja jest nieedytowalna.

Zastosowanie ochrony do kształtów PPTX

Aspose.Slides for Python via .NET udostępnia klasę Shape do pracy z kształtami na slajdzie.

Przykład ustawia select_locked, position_locked i size_locked na True dla autokształtów, z równoważnymi blokadami dla grupowanych kształtów, łączników i ramek obrazów. Łączniki używają position_move do przemieszczania; grupy także używają grouping_locked aby ograniczyć grupowanie.

Przykład ładuje istniejącą prezentację PPTX, sprawdza kształty w kolekcji kształtów każdego slajdu i zapisuje kopię z zastosowanymi ograniczeniami. Kształty spoza czterech obsługiwanych typów pozostają niezmienione. Pętla nie przegląda kształtów potomnych wewnątrz grupy.

import aspose.slides as slides

with slides.Presentation("Sample.pptx") as presentation:
    for slide in presentation.slides:
        for shape in slide.shapes:
            if isinstance(shape, slides.AutoShape):
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif isinstance(shape, slides.GroupShape):
                shape.shape_lock.grouping_locked = True
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif isinstance(shape, slides.Connector):
                shape.shape_lock.position_move = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif isinstance(shape, slides.PictureFrame):
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True

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

Usunięcie ochrony

Aby usunąć blokadę kształtu, ustaw jej wartość na False. Poniższy przykład ładuje prezentację z blokadami kształtów i usuwa ograniczenia zaznaczania, przemieszczania i zmiany rozmiaru za pomocą AutoShapeLock, GroupShapeLock, ConnectorLock oraz PictureFrameLock. Usuwa także GroupShapeLock.grouping_locked i zapisuje kopię prezentacji. Inne ustawienia blokad pozostają niezmienione.

import aspose.slides as slides

with slides.Presentation("ProtectedSample.pptx") as presentation:
    for slide in presentation.slides:
        for shape in slide.shapes:
            if isinstance(shape, slides.AutoShape):
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif isinstance(shape, slides.GroupShape):
                shape.shape_lock.grouping_locked = False
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif isinstance(shape, slides.Connector):
                shape.shape_lock.position_move = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif isinstance(shape, slides.PictureFrame):
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False

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

Podsumowanie

Aspose.Slides for Python via .NET pozwala ograniczyć określone operacje edycyjne na pojedynczych kształtach lub zastosować te same ograniczenia w całej prezentacji. Wybierz blokady obsługiwane przez dany typ kształtu i ustaw ich wartości na False, gdy potrzebujesz usunąć te ograniczenia.

FAQ

Czy mogę połączyć blokady kształtów i ochronę hasłem w tej samej prezentacji?

Tak. Blokady kształtów ograniczają określone operacje edycyjne, podczas gdy ochrona hasłem może ograniczyć otwieranie lub modyfikację prezentacji. Można używać obu w tym samym pliku.

Czy mogę ograniczyć edycję na konkretnych slajdach bez wpływu na inne?

Tak. Zastosuj blokady tylko do kształtów na wybranych slajdach. Nie zmienia to ustawień blokad na innych slajdach.

Jak mogę zastosować blokady do pojedynczych kształtów wewnątrz grupy?

Iteruj przez kolekcję shapes grupy i zastosuj odpowiednie blokady do każdego kształtu potomnego. Powtórz to dla wszelkich zagnieżdżonych grup. Powyższe przykłady przetwarzają tylko kolekcję kształtów slajdu, więc nie ustawiają blokad na pojedynczych elementach grupy.