基于iTextSharp实现PDF加密功能

简介: 本教程介绍使用C#与iTextSharp库实现PDF文档加密的方法。内容包括环境搭建、界面设计及后台逻辑编写,涵盖选择文件、设置用户与所有者密码、加密操作等步骤,帮助开发者快速掌握PDF安全处理技巧。

框架:C#+iTextSharp+WinForm

iTextSharp 是 .NET 平台上的开源 PDF 处理库,支持文档创建、文本/图像添加、表单处理、密码保护、水印添加等功能。

2、代码实战

首先打开Visual Studio 2019 创建一个WinForm窗体程序项目。然后引入第三方iTextSharp类库版本5.5.10。这里直接使用nuget包直接安装。

2.1 创建窗体

界面主要有选择pdf文档按钮、pdf文档路径和pdf密码输入框以及PDF加密按钮。界面效果如下:

2.2 后台代码逻辑

加密pdf文档逻辑代码如下:

代码语言:javascript

代码运行次数:0

运行

AI代码解释

/// <summary>
        /// 加密pdf文档
        /// </summary>
        /// <param name="inputPath">输入目录</param>
        /// <param name="outputPath">输出目录</param>
        /// <param name="userPassword">用户密码</param>
        /// <param name="ownerPassword">所有者密码</param>
        private void EncryptPdf(string inputPath, string outputPath, string userPassword, string ownerPassword)
        {
            using (FileStream input = new FileStream(inputPath, FileMode.Open, FileAccess.Read))
            using (FileStream output = new FileStream(outputPath, FileMode.Create))
            {
                PdfReader reader = new PdfReader(input);
                PdfStamper stamper = new PdfStamper(reader, output);
                // 设置加密参数
                int permissions = PdfWriter.AllowPrinting |
                                 PdfWriter.AllowCopy |
                                 PdfWriter.AllowScreenReaders |
                                 PdfWriter.AllowModifyAnnotations;
                // 加密文档 (128位加密)
                stamper.SetEncryption(
                    Encoding.UTF8.GetBytes(txtUserPassword.Text),
                    Encoding.UTF8.GetBytes(txtOwnerPassowrd.Text),
                    permissions,
                    PdfWriter.ENCRYPTION_AES_128
                );
                stamper.Close();
                reader.Close();
            }
        }

选择PDF文档

代码语言:javascript

代码运行次数:0

运行

AI代码解释

/// <summary>
        /// 选择需要加密的PDF文档
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenFile_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "PDF文件|*.pdf";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                txtInputPath.Text = openFileDialog1.FileName;
            }
        }

加密文档点击事件

代码语言:javascript

代码运行次数:0

运行

AI代码解释

/// <summary>
        /// 加密按钮点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string inputFile = txtInputPath.Text;
            string outputFile = Path.Combine(
                Path.GetDirectoryName(inputFile),
                Path.GetFileNameWithoutExtension(inputFile) + "_encrypted.pdf");
            string userPassword = txtUserPassword.Text;
            string ownerPassword = txtOwnerPassowrd.Text;
            if (string.IsNullOrWhiteSpace(inputFile))
            {
                MessageBox.Show("请输入完整的PDF路径!");
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(userPassword) && !string.IsNullOrWhiteSpace(ownerPassword))
                {
                    EncryptPdf(inputFile, outputFile, userPassword, ownerPassword);
                }
                else
                {
                    MessageBox.Show("用户密码和所有者密码均不能为空!");
                }
            }
        }

项目完整结构如下:aly.go-tests.net11

2.3 PDF加密用户类型

PDF加密用户类型分为userPassword和ownerPassword是两种不同权限的密码,主要区别如下:

用户密码(userPassword):用于限制文档的打开权限,用户输入该密码后只能进行只读操作(如查看内容),无法修改、打印或复制文档内容。

所有者密码(ownerPassword):用于获取完全控制权,通常用于文档的管理员或创建者,确保能自由编辑文档。

2.4  PDF加密权限列表

表格 还在加载中,请等待加载完成后再尝试复制

3、运行效果aly.iamgreer.com99

运行主界面

选择PDF文档

输入用户密码和所有者密码信息

点击加密按钮,最终输出加密成功就可以了。

尝试打开PDF文档,效果如下:

输入密码就可以正常打开PDF文档了。

4、总结

以上是C#实现PDF文档加密功能的实战内容,功能比较简单。大家如果有问题的话可以评论区沟通交流!

相关文章
|
存储
若依框架 --- pdf文件上传预览功能实现
若依框架 --- pdf文件上传预览功能实现
1137 0
|
存储
Vue3 实现 PDF 文件在线预览功能
Vue3 实现 PDF 文件在线预览功能
2729 0
|
5月前
|
数据安全/隐私保护 Windows
深度剖析:PDF 工具箱功能,编辑器操作及页面 / 图像提取技巧
PDF24 Tools是一款德国开发的免费PDF工具箱,18年始终免费,支持网页与Windows客户端。内置近50个工具,涵盖编辑、转换、合并、提取、加密等功能,操作简单,可离线使用,是高效处理PDF的理想选择。
801 0
|
8月前
|
人工智能 开发工具 开发者
【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能
HarmonyOS 系统提供的核心场景化视觉服务,旨在帮助开发者快速实现移动端文档数字化功能。
381 0
|
XML C# 数据格式
一个.NET开源、免费、功能强大的 PDF 处理工具
一个.NET开源、免费、功能强大的 PDF 处理工具
486 8
|
自然语言处理 数据可视化 数据挖掘
Agent实操(四):Code Interpreter,生成二维码、视频、PDF转txt等炸裂功能
本文介绍Agent自带的Code Interpreter有哪些高级而实用的能力
Agent实操(四):Code Interpreter,生成二维码、视频、PDF转txt等炸裂功能
|
Windows
阿里云的在线文档中,通常不提供直接导出为PDF或其他文档格式的功能
阿里云的在线文档中,通常不提供直接导出为PDF或其他文档格式的功能
1136 1
|
自然语言处理 机器人 API
GPT学术优化 (GPT Academic):支持一键润色、一键中英互译、一键代码解释、chat分析报告生成、PDF论文全文翻译功能、互联网信息聚合+GPT等等
GPT学术优化 (GPT Academic):支持一键润色、一键中英互译、一键代码解释、chat分析报告生成、PDF论文全文翻译功能、互联网信息聚合+GPT等等
|
开发框架 前端开发 JavaScript
在Winform分页控件中集成导出PDF文档的功能
在Winform分页控件中集成导出PDF文档的功能
|
JSON 测试技术 数据安全/隐私保护
【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF
【7月更文挑战第7天】Docker部署PDF多功能工具Stirling-PDF
1299 2

热门文章

最新文章