C#实战:基于iTextSharp实现PDF加密小工具

B站影视 韩国电影 2025-08-28 15:42 1

摘要:大家日常办公中有时候为了文档资料的安全需要对文档进行加密,尤其是针对PDF文档这个场景还是非常广泛的。今天给大家分享使用C#来实现PDF文档加密功能。并且功能基于Winform窗体程序可以直接运行,感兴趣的朋友可以体验一下!

大家日常办公中有时候为了文档资料的安全需要对文档进行加密,尤其是针对PDF文档这个场景还是非常广泛的。今天给大家分享使用C#来实现PDF文档加密功能。并且功能基于Winform窗体程序可以直接运行,感兴趣的朋友可以体验一下!

框架:C#+iTextSharp+WinForm

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

2、代码实战

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

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

/// /// 加密pdf文档 /// /// 输入目录 /// 输出目录 /// 用户密码 /// 所有者密码 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文档/// /// 选择需要加密的PDF文档 /// /// /// private void btnOpenFile_Click(object sender, EventArgs e) { openFileDialog1.Filter = "PDF文件|*.pdf"; if (openFileDialog1.ShowDialog == DialogResult.OK) { txtInputPath.Text = openFileDialog1.FileName; } }加密文档点击事件/// /// 加密按钮点击事件 /// /// /// 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("用户密码和所有者密码均不能为空!"); } } }

项目完整结构如下:

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

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

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

权限分类常量名称常量值权限说明基础操作权限AllowPrinting2052允许打印文档(低分辨率)AllowCopy16允许复制文档内容(文字、图片)AllowModifyContents8允许修改文档内容(需配合编辑密码)高级功能权限AllowModifyAnnotations32允许添加/修改注释、表单字段AllowFillIn256允许填写表单字段(交互式表单)AllowScreenReaders512允许屏幕阅读器访问(无障碍模式)AllowAssembly1024允许组装文档(插入/删除页面、添加书签)特殊控制权限AllowDegradedPrinting4允许低质量打印(仅适用于预览)3、运行效果

运行主界面

选择PDF文档

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

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

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

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

4、总结

来源:免费高清壁纸大全

相关推荐