このページには自動翻訳されたテキストを含めることができます。
C# および VB.NET で PDF ドキュメントを復号化する
PDF ドキュメントは、パスワードや証明書で保護することも、保護しないこともできます。
PDF ドキュメントを開くにはさまざまな方法があります。 推奨される方法は、まず PDF ファイルが保護され ているかどうかを確認することです。 別の方法としては、暗号化されているかどうかを最初に確認せずに PDF ドキュメントを開いてみるという方法もあります。 Docotic.Pdf ライブラリは、パスワードまたは証明書を必 要とするドキュメントに対して CannotDecryptPdfException 例外をスローします。
PDFドキュメントが保護されているかどうかを確認する
このライブラリは、PDF ドキュメントが暗号化されているかどうかを確認するための GetEncryptionInfo メソッドを提供します。 これらの メソッドは、ドキュメントの暗号化に使用される暗号化ハンドラーに関する情報も提供します。
9.5.17615-dev 14,813人が合格 NuGet の合計ダウンロード数 4,924,084次の C# コード スニペットは、PDF ファイルが暗号化されているかどうかを確認する方法を示しています:
var info = PdfDocument.GetEncryptionInfo(fileName);
if (info == null)
Console.WriteLine("暗号化されていない");
else if (info is PdfStandardEncryptionInfo standardInfo)
Console.WriteLine("パスワードで暗号化されている");
else if (info is PdfPublicKeyEncryptionInfo publicKeyInfo)
Console.WriteLine("デジタル証明書で暗号化されています");
パスワードで暗号化された PDF ドキュメントの多くは、開くためにパスワードを必要としません。 このよう な PDF ファイルの場合、パスワードが必要になるのは「所有者」(制限なし) モードの場合のみです。
if (standardInfo.RequiresPasswordToOpen)
Console.WriteLine("パスワードがないと開けない");
else
Console.WriteLine("パスワードは必要ありません");
証明書で暗号化された PDF ドキュメントの場合、受信者に関する情報を取得することができます。 つまり、 どの証明書が PDF ドキュメントのロックを解除できるかを確認できます。 ドキュメントのアクセス許可 は、PDF ファイルの復号化に使用される実際の証明書によって異なることに注意してください。
// Recipients プロパティには、PDF ドキュメントの復号化に使用できる証明書に関する情報が含まれています
foreach (var recipient in publicKeyInfo.Recipients)
Console.WriteLine(recipient.SerialNumber);
暗号化された PDF ドキュメントを .NET で開く
パスワードを使用して暗号化された PDF ドキュメントを開くためにパスワードが必要な場合とそうでない場合 があります。 どちらの場合も、PdfDocument コンストラクター を使用し てドキュメントを開きます。
PDF ファイルにパスワードが必要ない場合は、復号化ハンドラー パラメーターを指定せずにコンストラクター を使用します。 Docotic.Pdf ライブラリは、「ユーザー」(制限付き) 権限でドキュメントを開きます。
PDF ドキュメントを開くためにパスワードが必要な場合 は、PdfStandardDecryptionHandler タイプのハンド ラーを持つコンストラクターを使用します。 「所有者」(無制限) 権限で保護された PDF ファイルを開く場合 は、同じコンストラクターを使用します。
次のコード スニペットは、パスワードで保護された PDF ファイルを C# で開く方法を示しています:
using (var document = new PdfDocument(fileName, new PdfStandardDecryptionHandler("password")))
{
// 復号化された文書を使って何かをする
}
証明書を使用して暗号化された PDF ドキュメントを開くには、一致する証明書が必要です。 PDF ファイルに 一致する証明書が複数ある場合があります。 暗号化された PDF ドキュメントの作成者は、一致する証明書ご とに異なる権限を付与する場合があります。
現在のユーザーの X.509 証明書ストアに一致する証明書がインストールされている場合は、復号化ハンドラー パラメーターを指定せずに PdfDocument コンストラクターを使用します。 Docotic.Pdf ライブラリは、証明 書ストアから最初に一致する証明書を使用し、その証明書を使用してドキュメントを開きます。
現在のユーザーの X.509 証明書ストアに一致する/目的の証明書がインストールされていない場合
は、PdfPublicKeyDecryptionHandler インスタンスを
作成し、それを PdfDocument
コンストラクターで使用します。 証明書、キー ストア、または証明書ストア
を使用してハンドラーを作成できます。
次の C# コード スニペットは、キー ストアからの証明書を使用して公開キー復号化ハンドラーを作成しま す。 次に、ハンドラーを使用して証明書で保護された PDF ファイルを開きます:
var handler = new PdfPublicKeyDecryptionHandler("key-store.p12", "password");
using (var document = new PdfDocument(fileName, handler))
{
// 復号化された文書を使って何かをする
}
PDF ファイルから保護を解除する
PDF ドキュメントから保護を解除するには、次の手順に従います。
- 適切な復号化ハンドラーを備えた PdfDocument コンストラクターを使用して PDF を開きます
- 保存オプション で暗号化ハンドラーを設定しないでください。
- PDFドキュメントを保存します
暗号化ハンドラーがないと、ライブラリは PDF ドキュメントを暗号化せずに保存します。
PDF からパスワードを削除するに は、PdfStandardDecryptionHandler タイプのハンド ラーを使用してドキュメントを開きます。 証明書で保護されたドキュメントの場合 は、PdfPublicKeyDecryptionHandler タイプのハンド ラーを使用してください。
.NET で PDF のアクセス許可を確認する
PDF ドキュメントに付与されている 権限 を確認するには、まずドキュ メントを作成するか開く必要があります。 暗号化された PDF ファイルを開いた場合でも、保護されていない ファイルを開いた場合でも問題ありません。
このコード スニペットは、C# で PDF のアクセス許可を確認する方法を示しています:
// 新しいドキュメントを作成するか、既存のドキュメントを開きます
using (PdfDocument document = ...)
{
Console.WriteLine("Document permissions = {0}", document.GrantedPermissions);
}