Bloqueie formas de desbloqueio no PowerPoint PPT em C#

A proteção de documentos digitais é uma preocupação comum nos dias de hoje. Você não quer que nenhuma pessoa não autorizada altere o conteúdo de seus documentos. Portanto, torna-se inevitável a utilização de mecanismos de proteção eficazes. Assim, neste artigo, mostraremos como proteger apresentações PPT/PPTX de dentro de seus aplicativos .NET. Faremos isso bloqueando as formas em um PowerPoint PPT ou PPTX em C#.

API C# .NET para bloquear formas no PowerPoint PPT

Para bloquear e desbloquear apresentações do PowerPoint, usaremos Aspose.Slides for .NET. A API fornece uma variedade de recursos para criar e manipular apresentações do PowerPoint. Você pode baixar DLL da API ou instalá-la usando NuGet.

PM> Install-Package Aspose.Slides.NET

Bloquear formas no PowerPoint PPT em C#

Uma apresentação do PowerPoint pode conter uma variedade de elementos, como texto, imagens, áudio, etc. Aspose.Slides para .NET leva cada elemento como uma forma ou um objeto derivado de forma. Portanto, para proteger o conteúdo das apresentações, precisamos bloquear todas as suas formas. Aspose.Slides fornece bloqueios apropriados para os seguintes tipos de formas.

  • Forma automática
  • Forma do Grupo
  • Conector
  • Porta-retrato

As etapas a seguir mostram como bloquear formas em um PowerPoint PPT em C#.

  • Primeiro, carregue o arquivo PPT/PPTX usando a classe Presentation.
  • Em seguida, obtenha slides na apresentação usando a propriedade Presentation.Slides.
  • Para cada slide, acesse suas formas usando a coleção ISlide.Shapes.
  • Para cada forma na coleção, execute as seguintes etapas:
    • Verifique o tipo da forma.
    • Use trava apropriada de acordo com o tipo de forma.
  • Finalmente, salve a apresentação usando o método Presentation.Save(string, SaveFormat).

O exemplo de código a seguir mostra como bloquear formas em um PowerPoint PPTX usando C#.

// Carregar apresentação
using (Presentation presentation = new Presentation("presentation.pptx"))
{
    // Objeto IShape para segurar formas temporárias
    IShape shape;

    // Percorra todos os slides da apresentação
    for (int slideCount = 0; slideCount < presentation.Slides.Count; slideCount++)
    {
        var slide = presentation.Slides[slideCount];

        // Percorra todas as formas nos slides
        for (int count = 0; count < slide.Shapes.Count; count++)
        {
            shape = slide.Shapes[count];

            // Se a forma for forma automática
            if (shape is IAutoShape)
            {
                // Digite cast to auto shape e obtenha o auto shape lock
                IAutoShape Ashp = shape as IAutoShape;
                IAutoShapeLock AutoShapeLock = Ashp.ShapeLock;

                // Aplicar bloqueios de forma
                AutoShapeLock.PositionLocked = true;
                AutoShapeLock.SelectLocked = true;
                AutoShapeLock.SizeLocked = true;
            }

            // Se a forma for a forma do grupo
            else if (shape is IGroupShape)
            {
                // Digite cast to group shape e obtenha o bloqueio de forma de grupo
                IGroupShape Group = shape as IGroupShape;
                IGroupShapeLock groupShapeLock = Group.ShapeLock;

                // Aplicar bloqueios de forma
                groupShapeLock.GroupingLocked = true;
                groupShapeLock.PositionLocked = true;
                groupShapeLock.SelectLocked = true;
                groupShapeLock.SizeLocked = true;
            }

            // Se a forma é um conector
            else if (shape is IConnector)
            {
                // Digite cast para a forma do conector e obtenha o bloqueio da forma do conector
                IConnector Conn = shape as IConnector;
                IConnectorLock ConnLock = Conn.ShapeLock;

                // Aplicar bloqueios de forma
                ConnLock.PositionMove = true;
                ConnLock.SelectLocked = true;
                ConnLock.SizeLocked = true;
            }

            // Se a forma é moldura
            else if (shape is IPictureFrame)
            {
                // Digite cast para a forma da moldura e obtenha o bloqueio da forma da moldura
                IPictureFrame Pic = shape as IPictureFrame;
                IPictureFrameLock PicLock = Pic.ShapeLock;

                // Aplicar bloqueios de forma
                PicLock.PositionLocked = true;
                PicLock.SelectLocked = true;
                PicLock.SizeLocked = true;
            }
        }
    }

    // Salvar apresentação
    presentation.Save("locked-ppt.pptx", SaveFormat.Pptx);
}

Desbloqueie apresentações do PowerPoint em C#

Para desbloquear as formas e torná-las editáveis, você precisará desativar os bloqueios. Observe que, se você bloqueou as formas usando o Aspose.Slides para .NET, terá que usar a mesma API para desbloquear. O desbloqueio é feito desabilitando os bloqueios de forma e definindo seus valores como falsos.

O exemplo de código a seguir mostra como desbloquear formas em um arquivo PPTX em C#.

// Carregar apresentação
using (Presentation presentation = new Presentation("locked-ppt.ppt"))
{
    // Objeto IShape para segurar formas temporárias
    IShape shape;

    // Percorra todos os slides da apresentação
    for (int slideCount = 0; slideCount < presentation.Slides.Count; slideCount++)
    {
        var slide = presentation.Slides[slideCount];

        // Percorra todas as formas nos slides
        for (int count = 0; count < slide.Shapes.Count; count++)
        {
            shape = slide.Shapes[count];

            // Se a forma for forma automática
            if (shape is IAutoShape)
            {
                // Digite cast to auto shape e obtenha o auto shape lock
                IAutoShape Ashp = shape as IAutoShape;
                IAutoShapeLock AutoShapeLock = Ashp.ShapeLock;

                // Forma de desbloqueio
                AutoShapeLock.PositionLocked = false;
                AutoShapeLock.SelectLocked = false;
                AutoShapeLock.SizeLocked = false;
            }

            // Se a forma for a forma do grupo
            else if (shape is IGroupShape)
            {
                // Digite cast to group shape e obtenha o bloqueio de forma de grupo
                IGroupShape Group = shape as IGroupShape;
                IGroupShapeLock groupShapeLock = Group.ShapeLock;

                // Forma de desbloqueio
                groupShapeLock.GroupingLocked = false;
                groupShapeLock.PositionLocked = false;
                groupShapeLock.SelectLocked = false;
                groupShapeLock.SizeLocked = false;
            }

            // Se a forma for um conector
            else if (shape is IConnector)
            {
                // Digite cast para a forma do conector e obtenha o bloqueio da forma do conector
                IConnector Conn = shape as IConnector;
                IConnectorLock ConnLock = Conn.ShapeLock;

                // Forma de desbloqueio
                ConnLock.PositionMove = false;
                ConnLock.SelectLocked = false;
                ConnLock.SizeLocked = false;
            }

            // Se a forma é moldura
            else if (shape is IPictureFrame)
            {
                // Digite cast para a forma da moldura e obtenha o bloqueio da forma da moldura
                IPictureFrame Pic = shape as IPictureFrame;
                IPictureFrameLock PicLock = Pic.ShapeLock;

                // Forma de desbloqueio
                PicLock.PositionLocked = false;
                PicLock.SelectLocked = false;
                PicLock.SizeLocked = false;
            }
        }
    }

    // Salvar apresentação
    presentation.Save("unlocked-ppt.ppt", SaveFormat.Ppt);
}

Obtenha uma licença gratuita

Use Aspose.Slides para .NET sem limitações de avaliação obtendo uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como bloquear formas no PowerPoint PPT/PPTX em C#. Além disso, você viu como desproteger as apresentações desbloqueando suas formas programaticamente. Além disso, você pode explorar mais sobre o Aspose.Slides para .NET visitando a documentação. Além disso, você pode postar suas dúvidas em nosso fórum.

Veja também