用 C# 在 PowerPoint PPT 中锁定解锁形状

如今,数字文档的保护是一个普遍关注的问题。您不希望任何未经授权的人更改您的文档内容。因此,使用有效的保护机制成为必然。因此,在本文中,我们将向您展示如何保护 .NET 应用程序中的 PPT/PPTX 演示文稿。我们将通过在 C# 中锁定 PowerPoint PPTPPTX 中的形状来实现这一点。

C# .NET API 在 PowerPoint PPT 中锁定形状

要锁定和解锁 PowerPoint 演示文稿,我们将使用 Aspose.Slides for .NET。 API 提供了一系列功能来创建和操作 PowerPoint 演示文稿。您可以下载 API 的 DLL 或使用 NuGet 安装它。

PM> Install-Package Aspose.Slides.NET

用 C# 在 PowerPoint PPT 中锁定形状

PowerPoint 演示文稿可能包含各种元素,例如文本、图像、音频等。Aspose.Slides for .NET 将每个元素作为 Shape 或派生自 Shape 的 abject。因此,为了保护演示文稿的内容,我们需要锁定它们的所有形状。 Aspose.Slides 为以下类型的形状提供了适当的锁。

  • 自动形状
  • 组形状
  • 连接器
  • 镜框

以下步骤显示了如何在 C# 中锁定 PowerPoint PPT 中的形状。

  • 首先,使用 Presentation 类加载 PPT/PPTX 文件。
  • 然后,使用 Presentation.Slides 属性获取演示文稿中的幻灯片。
  • 对于每张幻灯片,使用 ISlide.Shapes 集合访问其形状。
  • 对于集合中的每个形状,执行以下步骤:
    • 检查形状的类型。
    • 根据形状的类型使用适当的锁。
  • 最后,使用 Presentation.Save(string, SaveFormat) 方法保存演示文稿。

以下代码示例演示如何使用 C# 锁定 PowerPoint PPTX 中的形状。

// 加载演示文稿
using (Presentation presentation = new Presentation("presentation.pptx"))
{
    // 用于保存临时形状的 IShape 对象
    IShape shape;

    // 遍历演示文稿中的所有幻灯片
   for (int slideCount = 0; slideCount < presentation.Slides.Count; slideCount++)
    {
        var slide = presentation.Slides[slideCount];

        // 遍历幻灯片中的所有形状
       for (int count = 0; count < slide.Shapes.Count; count++)
        {
            shape = slide.Shapes[count];

            // 如果形状是自动形状
            if (shape is IAutoShape)
            {
                // 类型铸成自动形状并获得自动形状锁定
                IAutoShape Ashp = shape as IAutoShape;
                IAutoShapeLock AutoShapeLock = Ashp.ShapeLock;

                // 应用形状锁
                AutoShapeLock.PositionLocked = true;
                AutoShapeLock.SelectLocked = true;
                AutoShapeLock.SizeLocked = true;
            }

            // 如果形状是组形状
            else if (shape is IGroupShape)
            {
                // 类型转换为组形状并获得组形状锁定
                IGroupShape Group = shape as IGroupShape;
                IGroupShapeLock groupShapeLock = Group.ShapeLock;

                // 应用形状锁
                groupShapeLock.GroupingLocked = true;
                groupShapeLock.PositionLocked = true;
                groupShapeLock.SelectLocked = true;
                groupShapeLock.SizeLocked = true;
            }

            // 如果形状是连接器
            else if (shape is IConnector)
            {
                // 类型铸成连接器形状并获得连接器形状锁定
                IConnector Conn = shape as IConnector;
                IConnectorLock ConnLock = Conn.ShapeLock;

                // 应用形状锁
                ConnLock.PositionMove = true;
                ConnLock.SelectLocked = true;
                ConnLock.SizeLocked = true;
            }

            // 如果形状是相框
            else if (shape is IPictureFrame)
            {
                // 类型铸成相框形状并获得相框形状锁定
                IPictureFrame Pic = shape as IPictureFrame;
                IPictureFrameLock PicLock = Pic.ShapeLock;

                // 应用形状锁
                PicLock.PositionLocked = true;
                PicLock.SelectLocked = true;
                PicLock.SizeLocked = true;
            }
        }
    }

    // 保存演示文稿
    presentation.Save("locked-ppt.pptx", SaveFormat.Pptx);
}

在 C# 中解锁 PowerPoint 演示文稿

要解锁形状并使它们可编辑,您需要关闭锁。请注意,如果您使用 Aspose.Slides for .NET 锁定了形状,那么您将不得不使用相同的 API 进行解锁。解锁是通过禁用形状锁并将其值设置为 false 来完成的。

以下代码示例显示了如何在 C# 中解锁 PPTX 文件中的形状。

// 加载演示文稿
using (Presentation presentation = new Presentation("locked-ppt.ppt"))
{
    // 用于保存临时形状的 IShape 对象
    IShape shape;

    // 遍历演示文稿中的所有幻灯片
   for (int slideCount = 0; slideCount < presentation.Slides.Count; slideCount++)
    {
        var slide = presentation.Slides[slideCount];

        // 遍历幻灯片中的所有形状
       for (int count = 0; count < slide.Shapes.Count; count++)
        {
            shape = slide.Shapes[count];

            // 如果形状是自动形状
            if (shape is IAutoShape)
            {
                // 类型铸成自动形状并获得自动形状锁定
                IAutoShape Ashp = shape as IAutoShape;
                IAutoShapeLock AutoShapeLock = Ashp.ShapeLock;

                // 解锁形状
                AutoShapeLock.PositionLocked = false;
                AutoShapeLock.SelectLocked = false;
                AutoShapeLock.SizeLocked = false;
            }

            // 如果形状是组形状
            else if (shape is IGroupShape)
            {
                // 类型转换为组形状并获得组形状锁定
                IGroupShape Group = shape as IGroupShape;
                IGroupShapeLock groupShapeLock = Group.ShapeLock;

                // 解锁形状
                groupShapeLock.GroupingLocked = false;
                groupShapeLock.PositionLocked = false;
                groupShapeLock.SelectLocked = false;
                groupShapeLock.SizeLocked = false;
            }

            // 如果形状是连接器
            else if (shape is IConnector)
            {
                // 类型铸成连接器形状并获得连接器形状锁定
                IConnector Conn = shape as IConnector;
                IConnectorLock ConnLock = Conn.ShapeLock;

                // 解锁形状
                ConnLock.PositionMove = false;
                ConnLock.SelectLocked = false;
                ConnLock.SizeLocked = false;
            }

            // 如果形状是相框
            else if (shape is IPictureFrame)
            {
                // 类型铸成相框形状并获得相框形状锁定
                IPictureFrame Pic = shape as IPictureFrame;
                IPictureFrameLock PicLock = Pic.ShapeLock;

                // 解锁形状
                PicLock.PositionLocked = false;
                PicLock.SelectLocked = false;
                PicLock.SizeLocked = false;
            }
        }
    }

    // 保存演示文稿
    presentation.Save("unlocked-ppt.ppt", SaveFormat.Ppt);
}

获得免费许可证

通过获得免费临时许可证,使用 Aspose.Slides for .NET,不受评估限制。

结论

在本文中,您学习了如何在 C# 中锁定 PowerPoint PPT/PPTX 中的形状。此外,您还了解了如何通过以编程方式解锁演示文稿的形状来解除对演示文稿的保护。除此之外,您可以通过访问 文档 探索更多关于 Aspose.Slides for .NET 的信息。此外,您可以将您的查询发布到我们的 论坛

也可以看看