Ogranicz edycję prezentacji za pomocą blokad kształtów w PHP

Przegląd

Typowym zastosowaniem Aspose.Slides for PHP via Java 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 zawartość.

Ten artykuł wyjaśnia, jak kształty są organizowane na slajdach oraz jak zastosować i usunąć blokady kształtów w prezentacji PPTX. Blokady te pozwalają ograniczyć konkretne operacje edycji na poszczególnych 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 i inne elementy używane do budowy prezentacji. W Aspose.Slides for PHP via Java 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 PHP via Java zapewnia następujące klasy blokad:

Aby zastosować blokady w całej Presentation, iteruj przez 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 wybieranie, przenoszenie i zmiana rozmiaru kształtów. Nie powodują, że cała prezentacja staje się nieedytowalna.

Zastosowanie ochrony do kształtów PPTX

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

Przykład wywołuje setSelectLocked, setPositionLocked i setSizeLocked z wartością true dla autokształtów, z równoważnymi blokadami dla grupowanych kształtów, łączników i ramek obrazów. Łączniki używają setPositionMove do przemieszczania; grupy używają również setGroupingLocked do ograniczenia grupowania.

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 podrzędnych wewnątrz grupy.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("Sample.pptx");
try {
    foreach ($presentation->getSlides()->toArray() as $slide) {
        foreach ($slide->getShapes()->toArray() as $shape) {
            if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setGroupingLocked(true);
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionMove(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(true);
                $shapeLock->setSelectLocked(true);
                $shapeLock->setSizeLocked(true);
            }
        }
    }

    $presentation->save("ProtectedSample.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

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 wyboru, przemieszczania i zmiany rozmiaru poprzez AutoShapeLock, GroupShapeLock, ConnectorLock i PictureFrameLock. Usuwa również ograniczenie grupowania, przekazując false do GroupShapeLock::setGroupingLocked i zapisuje kopię prezentacji. Inne ustawienia blokad pozostają niezmienione.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("ProtectedSample.pptx");
try {
    foreach ($presentation->getSlides()->toArray() as $slide) {
        foreach ($slide->getShapes()->toArray() as $shape) {
            if (java_instanceof($shape, new JavaClass("com.aspose.slides.AutoShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.GroupShape"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setGroupingLocked(false);
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.Connector"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionMove(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            } elseif (java_instanceof($shape, new JavaClass("com.aspose.slides.PictureFrame"))) {
                $shapeLock = $shape->getShapeLock();
                $shapeLock->setPositionLocked(false);
                $shapeLock->setSelectLocked(false);
                $shapeLock->setSizeLocked(false);
            }
        }
    }

    $presentation->save("RemovedProtectionSample.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Wnioski

Aspose.Slides for PHP via Java pozwala ograniczyć konkretne operacje edycji na poszczególnych kształtach lub zastosować te same ograniczenia na wszystkich slajdach. Wybierz blokady obsługiwane przez dany typ kształtu i ustaw ich wartości na false, gdy potrzebujesz usunąć te ograniczenia.

FAQ

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

Tak. Blokady kształtów ograniczają konkretne operacje edycji, podczas gdy ochrona hasłem może ograniczyć otwieranie lub modyfikowanie 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 zmieni to ustawień blokad na innych slajdach.

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

Iteruj przez kolekcję zwróconą przez metodę getShapes grupy i zastosuj odpowiednie blokady do każdego kształtu podrzędnego. 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 poszczególnych elementach grupy.