Restringir a edição de apresentações com bloqueios de forma no Android

Visão geral

Um uso comum do Aspose.Slides for Android via Java é criar, atualizar e salvar apresentações PowerPoint (PPTX) como parte de um fluxo de trabalho automatizado. Quando os usuários recebem essas apresentações, restringir alterações nas formas pode ajudar a preservar o layout e o conteúdo pretendidos.

Este artigo explica como as formas são organizadas nos slides e como aplicar e remover bloqueios de formas em uma apresentação PPTX. Esses bloqueios permitem restringir operações de edição específicas em formas individuais.

Composição de um Slide

Um slide de apresentação é composto por componentes como formas automáticas, tabelas, objetos OLE, formas agrupadas, quadros de imagem, quadros de vídeo, conectores e outros elementos usados para criar uma apresentação. No Aspose.Slides for Android via Java, cada elemento em um slide é representado por um objeto que implementa a interface IShape ou herda de uma classe que a implementa.

Tipos diferentes de formas oferecem opções de bloqueio distintas. A interface IBaseShapeLock é a interface base para bloqueios de forma. O Aspose.Slides for Android via Java fornece as seguintes interfaces de bloqueio:

Para aplicar bloqueios em toda a Presentation, percorra seus slides e defina os bloqueios apropriados em cada forma suportada.

Aplicar e Remover Proteção

Os bloqueios de forma restringem operações como selecionar, mover e redimensionar formas. Eles não tornam toda a apresentação não editável.

Aplicar Proteção a Formas PPTX

O Aspose.Slides for Android via Java fornece a interface IShape para trabalhar com formas em um slide.

O exemplo chama setSelectLocked, setPositionLocked e setSizeLocked com true para formas automáticas, com bloqueios equivalentes para formas agrupadas, conectores e quadros de imagem. Conectores usam setPositionMove para movimentação; grupos também usam setGroupingLocked para restringir o agrupamento.

O exemplo carrega uma apresentação PPTX existente, verifica as formas na coleção de formas de cada slide e salva uma cópia com essas restrições aplicadas. Formas fora dos quatro tipos tratados permanecem inalteradas. O loop não percorre as formas filhas dentro de um grupo.

import com.aspose.slides.*;

Presentation presentation = new Presentation("Sample.pptx");
try {
    for (ISlide slide : presentation.getSlides()) {
        for (IShape shape : slide.getShapes()) {
            if (shape instanceof IAutoShape) {
                IAutoShape autoShape = (IAutoShape) shape;
                IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
                autoShapeLock.setPositionLocked(true);
                autoShapeLock.setSelectLocked(true);
                autoShapeLock.setSizeLocked(true);
            } else if (shape instanceof IGroupShape) {
                IGroupShape groupShape = (IGroupShape) shape;
                IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
                groupShapeLock.setGroupingLocked(true);
                groupShapeLock.setPositionLocked(true);
                groupShapeLock.setSelectLocked(true);
                groupShapeLock.setSizeLocked(true);
            } else if (shape instanceof IConnector) {
                IConnector connectorShape = (IConnector) shape;
                IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
                connectorShapeLock.setPositionMove(true);
                connectorShapeLock.setSelectLocked(true);
                connectorShapeLock.setSizeLocked(true);
            } else if (shape instanceof IPictureFrame) {
                IPictureFrame pictureFrame = (IPictureFrame) shape;
                IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
                pictureFrameLock.setPositionLocked(true);
                pictureFrameLock.setSelectLocked(true);
                pictureFrameLock.setSizeLocked(true);
            }
        }
    }

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

Remover Proteção

Para remover um bloqueio de forma, defina seu valor como false. O exemplo a seguir carrega uma apresentação com bloqueios de forma e limpa as restrições de seleção, movimentação e redimensionamento através de IAutoShapeLock, IGroupShapeLock, IConnectorLock e IPictureFrameLock. Ele também remove a restrição de agrupamento passando false para IGroupShapeLock.setGroupingLocked e salva uma cópia da apresentação. Outras configurações de bloqueio permanecem inalteradas.

import com.aspose.slides.*;

Presentation presentation = new Presentation("ProtectedSample.pptx");
try {
    for (ISlide slide : presentation.getSlides()) {
        for (IShape shape : slide.getShapes()) {
            if (shape instanceof IAutoShape) {
                IAutoShape autoShape = (IAutoShape) shape;
                IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
                autoShapeLock.setPositionLocked(false);
                autoShapeLock.setSelectLocked(false);
                autoShapeLock.setSizeLocked(false);
            } else if (shape instanceof IGroupShape) {
                IGroupShape groupShape = (IGroupShape) shape;
                IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
                groupShapeLock.setGroupingLocked(false);
                groupShapeLock.setPositionLocked(false);
                groupShapeLock.setSelectLocked(false);
                groupShapeLock.setSizeLocked(false);
            } else if (shape instanceof IConnector) {
                IConnector connectorShape = (IConnector) shape;
                IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
                connectorShapeLock.setPositionMove(false);
                connectorShapeLock.setSelectLocked(false);
                connectorShapeLock.setSizeLocked(false);
            } else if (shape instanceof IPictureFrame) {
                IPictureFrame pictureFrame = (IPictureFrame) shape;
                IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
                pictureFrameLock.setPositionLocked(false);
                pictureFrameLock.setSelectLocked(false);
                pictureFrameLock.setSizeLocked(false);
            }
        }
    }

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

Conclusão

O Aspose.Slides for Android via Java permite restringir operações de edição específicas em formas individuais ou aplicar as mesmas restrições em vários slides. Escolha os bloqueios suportados por cada tipo de forma e defina seus valores como false quando precisar remover essas restrições.

Perguntas Frequentes

Posso combinar bloqueios de forma e proteção por senha na mesma apresentação?

Sim. Os bloqueios de forma restringem operações de edição específicas, enquanto a proteção por senha pode restringir a abertura ou modificação da apresentação. É possível usar ambos no mesmo arquivo.

Posso restringir a edição em slides específicos sem afetar os demais?

Sim. Aplique bloqueios apenas nas formas dos slides selecionados. Isso não altera as configurações de bloqueio nos outros slides.

Como posso aplicar bloqueios a formas individuais dentro de um grupo?

Percorra a coleção retornada pelo método getShapes do grupo e aplique os bloqueios apropriados a cada forma filha. Repita isso para quaisquer grupos aninhados. Os exemplos acima processam apenas a coleção de formas do slide, portanto não definem bloqueios nos membros individuais do grupo.