C#判斷PDF是否啟用了密碼保護(hù)并確認(rèn)正確的密碼
PDF 的密碼保護(hù)是一種常見的安全機制,用于限制訪問并防止未經(jīng)授權(quán)的修改。在處理 PDF 文件之前,確認(rèn)其是否設(shè)置了密碼保護(hù)非常重要。如果文檔受保護(hù),只有驗證正確的密碼后,才能成功解鎖文件,從而順利進(jìn)行查看、編輯或內(nèi)容提取等操作。
本文將介紹如何使用 C# 以及 Spire.PDF for .NET 庫來判斷 PDF 是否啟用了密碼保護(hù),并演示驗證正確密碼的具體方法。
安裝 Spire.PDF for .NET
首先,需要將 Spire.PDF for .NET 安裝并引入到你的 .NET 項目中。你可以選擇以下任一方式添加所需的 DLL 文件作為項目引用:
- 從官方下載鏈接獲取 DLL 文件,并手動添加到項目中;
- 通過 NuGet 安裝,這是更推薦、也更便捷的方式。
完成安裝后,即可在項目中使用 Spire.PDF for .NET 提供的相關(guān)功能。
PM> Install-Package Spire.PDF
使用 C# 檢查 PDF 是否受密碼保護(hù)
Spire.PDF for .NET 提供了 PdfDocument.IsPasswordProtected(string fileName) 方法,可用于判斷指定的 PDF 文件是否啟用了密碼保護(hù)。
具體示例代碼如下:
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 文件是否受密碼保護(hù)
bool isProtected = PdfDocument.IsPasswordProtected(pdfPath);
// 創(chuàng)建 StreamWriter,將結(jié)果寫入文本文件
using (StreamWriter writer = new StreamWriter(resultFilePath))
{
// 將驗證結(jié)果寫入文本文件
string resultMessage = isProtected ? "該 PDF 文件已設(shè)置密碼保護(hù)。" : "該 PDF 文件未設(shè)置密碼保護(hù)。";
writer.WriteLine(resultMessage);
}
}
}
}使用 C# 確認(rèn) PDF 的正確密碼
Spire.PDF for .NET 并未提供直接用于驗證密碼是否正確的方法,但可以通過嘗試使用指定密碼打開 PDF 文件來實現(xiàn)這一目的。如果密碼不正確,程序?qū)伋霎惓!?/p>
具體示例代碼如下:
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 文件是否受密碼保護(hù)
bool isProtected = PdfDocument.IsPasswordProtected(pdfPath);
// 創(chuàng)建一個用于測試的候選密碼數(shù)組
string[] passwords = new string[5] { "password1", "password2", "password3", "admin123", "test" };
// 創(chuàng)建 StreamWriter,將結(jié)果寫入文本文件
using (StreamWriter writer = new StreamWriter(resultFilePath))
{
// 如果 PDF 受密碼保護(hù),則開始測試密碼
if (isProtected)
{
// 遍歷候選密碼數(shù)組
for (int passwordcount = 0; passwordcount < passwords.Length; passwordcount++)
{
try
{
// 創(chuàng)建 PdfDocument 對象,并嘗試使用當(dāng)前密碼加載 PDF 文檔
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(pdfPath, passwords[passwordcount]);
// 如果加載成功,說明密碼正確
writer.WriteLine("密碼 " + passwords[passwordcount] + " 正確");
}
catch
{
// 如果拋出異常,說明密碼不正確
writer.WriteLine("密碼 " + passwords[passwordcount] + " 不正確");
}
}
}
else
{
// 如果 PDF 未設(shè)置密碼保護(hù),則在結(jié)果中說明
writer.WriteLine("該 PDF 文件未設(shè)置密碼保護(hù)。");
}
}
Console.WriteLine("驗證結(jié)果已保存至:" + resultFilePath);
Console.ReadKey();
}
}
}到此這篇關(guān)于C#判斷PDF是否啟用了密碼保護(hù)并確認(rèn)正確的密碼的文章就介紹到這了,更多相關(guān)C# PDF密碼保護(hù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Unity3D游戲開發(fā)數(shù)據(jù)持久化PlayerPrefs的用法詳解
在本篇文章里小編給大家整理了關(guān)于Unity3D游戲開發(fā)之?dāng)?shù)據(jù)持久化PlayerPrefs的使用的相關(guān)知識點內(nèi)容,需要的朋友們參考下。2019-08-08
c#使用ManagedWifi查看當(dāng)前Wifi信號并選擇wifi的示例
這篇文章主要介紹了c#使用ManagedWifi查看當(dāng)前Wifi信號并選擇wifi的示例,需要的朋友可以參考下2014-04-04
C#利用Task實現(xiàn)任務(wù)超時多任務(wù)一起執(zhí)行的方法
這篇文章主要給大家介紹了關(guān)于C#利用Task實現(xiàn)任務(wù)超時,多任務(wù)一起執(zhí)行的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。2017-12-12

