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

