C#实现PDF文件加密并设置权限操作

 更新时间:2025年09月19日 09:25:10   作者:咕白m625  
在文档安全日益重要的今天,如何用 C# 对PDF文件进行加密并设置访问权限,已成为企业级开发中的常见需求,下面就跟随小编一起来了解下具体实现方法吧

在文档安全日益重要的今天,如何用 C# 对PDF文件进行加密并设置访问权限,已成为企业级开发中的常见需求。尤其在文档共享、审批流程或敏感资料管理中,C# 加密 PDF不仅关乎数据安全,更直接影响系统可信度。

本文将分享使用 Free Spire.PDF for .NET 实现PDF文件的加密与权限控制,提供可直接复用的代码示例与操作流程,帮助开发者高效、安全地完成PDF保护。

免费 .NET PDF 库

Free Spire.PDF for .NET是专为 .NET 开发者设计的轻量级工具,支持C#、VB.NET,免费无水印,但有页数限制,适合小型项目快速集成。

  • 支持多种加密方式(密码+权限)
  • 无需安装额外组件,直接NuGet安装
  • 代码简洁,学习成本低

安装NuGet包:

Install-Package FreeSpire.PDF

核心功能:加密 + 权限设置

通过 Spire.PDF,我们可实现以下操作:

  • 设置用户密码(打开PDF需输入密码)
  • 设置所有者密码(可修改权限,如禁止打印)
  • 配置访问权限(如禁止复制、打印、编辑)
using Spire.Pdf;

namespace EncryptPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载 PDF
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("示例.pdf");

            // 指定用户密码和所有者密码
            string userPassword = "user123";
            string ownerPassword = "e-iceblue";

            PdfSecurityPolicy securityPolicy = new PdfPasswordSecurityPolicy(userPassword, ownerPassword);

            // 设置加密算法
            securityPolicy.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_256;

            // 设置文档权限
            securityPolicy.DocumentPrivilege = PdfDocumentPrivilege.AllowAll;
            securityPolicy.DocumentPrivilege.AllowPrint = false; // 禁止打印
            securityPolicy.DocumentPrivilege.AllowContentCopying = false; // 禁止复制

            // 加密 PDF 并保存
            pdf.Encrypt(securityPolicy);
            pdf.SaveToFile("加密PDF.pdf", FileFormat.PDF);
        }
    }
}

提示:用户密码用于打开PDF,所有者密码用于修改权限,两者可独立设置。

方法补充

C# 实现PDF加密保护

  using Spire.Pdf.Security;

try
{
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("input.pdf");
    
    //⭕重点提示:商业版功能
    PdfSecurity security = doc.Security;
    security.KeySize = PdfEncryptionKeySize.Key128Bit; // 设置128位AES加密
    security.OwnerPassword = "admin@2024"; //权限密码
    security.UserPassword = "user123"; //打开密码
    
    //权限控制参数设置
    security.Permissions = PdfPermissionsFlags.Print 
                         | PdfPermissionsFlags.CopyContent;
    
    doc.SaveToFile("encrypted.pdf");
}
catch(NotSupportedException ex) 
{
    Console.WriteLine("加密功能需要商业版授权");
}

实际应用场景

  • 合同审批流程:发送给客户前加密,禁止打印或修改,保障法律效力
  • 内部报告分发:设置权限,仅允许查看,防止信息泄露
  • 教育平台文档:学生下载后只能阅读,不可复制或编辑

在数字化办公中,C# 加密 PDF 文件不仅是一种技术手段,更是一种安全习惯。通过 Free Spire.PDF for .NET,我们能用简单代码实现高安全性保护。

到此这篇关于C#实现PDF文件加密并设置权限操作的文章就介绍到这了,更多相关C# PDF加密与权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# 批处理调用方法

    C# 批处理调用方法

    当批处理和aspx不在同一目录中时,最好用WorkingDirectory设置启动的进程的初始目录为批处理所在目录,否则如上例中批处理新建的目录就应在aspx所在目录中而不是批处理所在目录了!
    2008-12-12
  • C# Chart绘制简单图形波形

    C# Chart绘制简单图形波形

    这篇文章主要为大家详细介绍了C# Chart绘制简单图形波形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 从原理到高级应用解析WPF依赖属性

    从原理到高级应用解析WPF依赖属性

    依赖属性(Dependency Property)是WPF中一个核心概念,它扩展了传统的.NET属性系统,本文将从原理到高级应用为大家进行详细介绍,希望对大家有所帮助
    2025-07-07
  • C#实现聊天消息渲染与图文混排详解

    C#实现聊天消息渲染与图文混排详解

    在实现聊天软件时,渲染文字表情图文混排是一项非常繁琐的工作,再加上还要支持GIF动图、引用消息、撤回消息、名片等不同样式的消息渲染时,就更加麻烦了。本文就来和大家分享一下具体实现方法,希望对大家有所帮助
    2023-02-02
  • C#实现泛型List分组输出元素的方法

    C#实现泛型List分组输出元素的方法

    这篇文章主要介绍了C#实现泛型List分组输出元素的方法,涉及C#针对List的遍历、排序、输出等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • c# 控件截图的简单实例

    c# 控件截图的简单实例

    这篇文章介绍了c# 控件截图的简单实例,有需要的朋友可以参考一下
    2013-10-10
  • C#中如何使用 XmlReader 读取XML文件

    C#中如何使用 XmlReader 读取XML文件

    本文介绍了C#中使用XmlReader,只读、向前、循环读取XML节点的方法,并为我们列出、XmlReader类的方法、属性、枚举等成员,希望对大家学习有所帮助。
    2016-05-05
  • c#数据的序列化和反序列化(推荐版)

    c#数据的序列化和反序列化(推荐版)

    今天项目中用到了数据的序列化和反序列化,数据用的是EF自动生成的代码
    2011-09-09
  • Question:基于C#连续赋值的面试题(解答)

    Question:基于C#连续赋值的面试题(解答)

    本篇文章是对C#中连续赋值的面试题进行了解答,需要的朋友参考下
    2013-05-05
  • C# 使用动态库DllImport("kernel32")读写ini文件的步骤

    C# 使用动态库DllImport("kernel32")读写ini文件的步骤

    kernel32.dll是Windows中非常重要的32位动态链接库文件,属于内核级文件,这篇文章主要介绍了C# 利用动态库DllImport("kernel32")读写ini文件,需要的朋友可以参考下
    2023-05-05

最新评论