使用C#代码检查 PDF 是否受密码保护并确认正确的密码

PDF 的密码保护是一种常见的安全机制,用于限制访问并防止未经授权的修改。在处理 PDF 文件之前,确认其是否设置了密码保护非常重要。如果文档受保护,只有验证正确的密码后,才能成功解锁文件,从而顺利进行查看、编辑或内容提取等操作。

本文将介绍如何使用 C# 以及 Spire.PDF for .NET 库来判断 PDF 是否启用了密码保护,并演示验证正确密码的具体方法。

安装 Spire.PDF for .NET

首先,需要将 Spire.PDF for .NET 安装并引入到你的 .NET 项目中。你可以选择以下任一方式添加所需的 DLL 文件作为项目引用:

  • 从官方下载链接获取 DLL 文件,并手动添加到项目中;

  • 通过 NuGet 安装,这是更推荐、也更便捷的方式。

完成安装后,即可在项目中使用 Spire.PDF for .NET 提供的相关功能。

cs 复制代码
PM> Install-Package Spire.PDF

使用 C# 检查 PDF 是否受密码保护

Spire.PDF for .NET 提供了 PdfDocument.IsPasswordProtected(string fileName) 方法,可用于判断指定的 PDF 文件是否启用了密码保护。

具体示例代码如下:

cs 复制代码
using Spire.Pdf;
using System.IO;

namespace CheckIfPdfIsProtected
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 指定输入和输出文件路径
            string pdfPath = "sample.pdf";
            string resultFilePath = "verification_results.txt";

            // 检查 PDF 文件是否受密码保护
            bool isProtected = PdfDocument.IsPasswordProtected(pdfPath);

            // 创建 StreamWriter,将结果写入文本文件
            using (StreamWriter writer = new StreamWriter(resultFilePath))
            {
                // 将验证结果写入文本文件
                string resultMessage = isProtected ? "该 PDF 文件已设置密码保护。" : "该 PDF 文件未设置密码保护。";
                writer.WriteLine(resultMessage);
            }
        }
    }
}

使用 C# 确认 PDF 的正确密码

Spire.PDF for .NET 并未提供直接用于验证密码是否正确的方法,但可以通过尝试使用指定密码打开 PDF 文件来实现这一目的。如果密码不正确,程序将会抛出异常。

具体示例代码如下:

cs 复制代码
using Spire.Pdf;
using System;
using System.IO;

namespace DetermineTheCorrectPasswordOfPdf
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 指定输入和输出文件路径
            string pdfPath = "sample.pdf";
            string resultFilePath = "verification_results.txt";

            // 检查 PDF 文件是否受密码保护
            bool isProtected = PdfDocument.IsPasswordProtected(pdfPath);

            // 创建一个用于测试的候选密码数组
            string[] passwords = new string[5] { "password1", "password2", "password3", "admin123", "test" };

            // 创建 StreamWriter,将结果写入文本文件
            using (StreamWriter writer = new StreamWriter(resultFilePath))
            {
                // 如果 PDF 受密码保护,则开始测试密码
                if (isProtected)
                {
                    // 遍历候选密码数组
                    for (int passwordcount = 0; passwordcount < passwords.Length; passwordcount++)
                    {
                        try
                        {
                            // 创建 PdfDocument 对象,并尝试使用当前密码加载 PDF 文档
                            PdfDocument doc = new PdfDocument();
                            doc.LoadFromFile(pdfPath, passwords[passwordcount]);

                            // 如果加载成功,说明密码正确
                            writer.WriteLine("密码 " + passwords[passwordcount] + " 正确");
                        }
                        catch
                        {
                            // 如果抛出异常,说明密码不正确
                            writer.WriteLine("密码 " + passwords[passwordcount] + " 不正确");
                        }
                    }
                }
                else
                {
                    // 如果 PDF 未设置密码保护,则在结果中说明
                    writer.WriteLine("该 PDF 文件未设置密码保护。");
                }
            }

            Console.WriteLine("验证结果已保存至:" + resultFilePath);
            Console.ReadKey();
        }
    }
}

获取免费许可证

如需在不受评估限制的情况下完整体验 Spire.PDF for .NET 的全部功能,你可以申请一份有效期为 30 天的免费试用许可证

相关推荐
zhonyu鱼4 小时前
Saber:专为触控笔设计的开源手写笔记与 PDF 批注工具
笔记·pdf·开源
winfredzhang5 小时前
用 Python + wxPython 造一个照片工具箱:PDF / 加密ZIP / MP4 / 归档,以及我在这过程中踩到的 4 个坑
python·pdf·zip·mp4·移动
2501_9307077816 小时前
使用C#代码在 PDF 文档中创建列表
pdf
AI导出鸭1 天前
Claude的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?专业用户首选“AI导出鸭”
人工智能·pdf·ai导出鸭
qyyyyy5702 天前
外文 PDF 怎么整理成 Markdown?从翻译、内容提取到 RAG 知识库导入
自然语言处理·pdf·erlang·机器翻译·零知识证明
AI导出鸭3 天前
Perplexity的LaTeX生成PDF文件复制后数学公式乱码,怎样修改?AI导出鸭苹果版的技术拆解与批量之道
人工智能·pdf·ai导出鸭
SpaceAIGlobal3 天前
AI PPT生成工具哪些支持PDF文档导入?
人工智能·ai·pdf·powerpoint·办公
Xxtaoaooo3 天前
极空间部署Stirling PDF:搭建自托管PDF工具箱并实现远程访问
pdf·cpolar·stirling pdf
SamChan903 天前
对比 4 种主流 PDF 文档解析方案:PyMuPDF vs pdfplumber vs Apache PDFBox vs 大模型 OCR
python·ai·pdf·ocr·apache·机器翻译
AI刀刀4 天前
Kimi 文档导出格式错乱、排版丢失、导出报错?AI 导出鸭一键智能适配,稳定输出规范 Word、PDF,高效解决各类导出难题
人工智能·pdf·word·ai导出鸭