このページには自動翻訳されたテキストを含めることができます。

C# および VB.NET で PDF ドキュメントを暗号化する

Docotic.Pdf ライブラリを利用すると、パスワードまたは証明書を使用して PDF ドキュメントを暗号化できます。

ライブラリは、選択した暗号化アルゴリズムを使用して、保護されたドキュメントを暗号化します。 このライ ブラリは、RC4 40 ビット、RC4 128 ビット、AES 128 ビット、および AES 256 ビット暗号化アルゴリズムを サポートしています。 保護された PDF ファイルのユーザーにどのような権限を付与するかを決定します。

C# および VB.NET で PDF ドキュメントを暗号化する

PDFをパスワードで保護する

パスワードで保護された PDF ドキュメントには所有者があり、オプションでユーザー パスワードも設定でき ます。 パスワードで保護された PDF ファイルを所有者のパスワードで開くと、すべての PDF 権限が付与され ます。 ユーザー パスワードを使用して PDF ドキュメントを開いた場合、またはパスワードをまったく使用せ ずに PDF ドキュメントを開いた場合、「ユーザー」権限のみが付与されます。 たとえば、暗号化された PDF ファイルの作成者は「ユーザー」の印刷を禁止できますが、「所有者」は引き続きドキュメントを印刷できま す。

パスワードで保護された PDF ドキュメントを作成するに は、PdfStandardEncryptionHandler クラスのイ ンスタンスを作成し、必要に応じて設定します。 次に、オブジェクトをドキュメント保存オプションの EncryptionHandler プロパティに割り当て ます。ライブラリはハンドラーを使用して、PDF ドキュメントを保存中に暗号化します。

Docotic.Pdf ライブラリ 9.5.17615-dev 回帰テスト 14,813人が合格 NuGet の合計ダウンロード数 4,924,084

次のコード スニペットは、C# でパスワードで保護された PDF ファイルを作成する方法を示しています:

using (PdfDocument document = ...)
{
    var handler = new PdfStandardEncryptionHandler("owner", "user");
    handler.UserPermissions.Flags = PdfPermissionFlags.ModifyContents;

    var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
    document.Save(outputFileName, saveOptions);
}

上記のコードでは、所有者パスワードとして owner を使用し、ユーザー パスワードとして user を使用 します。 PDF ビューアでは、セキュリティで保護された PDF ファイルを開くためにパスワードが必要になり ます。 これは、ユーザーのパスワードが null または空の文字列ではないためです。

PDF ファイルをセキュリティで保護したいが、誰でもパスワードなしで開くことができるようにしたい場合 は、ユーザー パスワードに null または空の文字列を使用します。

.NET の証明書を使用して PDF を保護する

証明書で保護された PDF ドキュメントには受信者のコレクションがあります。 コレクションには任意の数の アイテムを含めることができます。 各受信者は、保護された PDF ドキュメントを復号化するために使用でき る証明書を説明します。 受信者ごとに、PDF へのアクセス権限が指定されています。 復号化された PDF ド キュメントに付与されるアクセス許可は、ドキュメントの保護を解除するために使用された証明書によって異 なります。

一部のアクセス権限では、復号化された PDF ファイルに対するすべての操作が許可されます。 このような権 限を持つ受信者を Docotic.Pdf ライブラリでは所有者と呼びます。 通常の受信者には、復号化された PDF ド キュメントに対する権限が制限されています。

証明書で保護されたドキュメントを作成するに は、PdfPublicKeyEncryptionHandler クラスの インスタンスを作成することから始めます。 アクセス許可パラメーターのないコンストラクターは、所有者受 信者を持つオブジェクトを作成します。 通常の受信者を持つ暗号化ハンドラーを取得するには、permission パラメーターを指定したコンストラクターを使用します。

AddOwner メソッドを使用して、所有 者受信者をさらに追加できます。 AddRecipient メソッドを使用し て、通常の受信者を追加します。 必要に応じて、所有者と通常の受信者を暗号化ハンドラーに追加できます。

次に、ドキュメントの保存中にハンドラーを使用するようにライブラリに指示します。 このために、オブジェ クトをドキュメント保存オプションの EncryptionHandler プロパティに割り当て ます。

次のコードは、C# で証明書で保護された PDF ファイルを作成する方法を示しています。 このコードは、所有 者と通常の受信者を含むハンドラーを準備します。 どちらの場合も、受信者の証明書は、提供されたキー ス トアから取得されます。

using (PdfDocument document = ...)
{
    var handler = new PdfPublicKeyEncryptionHandler("owner-key-store.p12", "password");
    
    var permissions = new PdfPermissions();
    permissions.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.PrintDocument;
    handler.AddRecipient("recipient-key-store.p12", "password", permissions);
    
    var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
    document.Save(outputFileName, saveOptions);
}

PDFファイルの編集を制限する

PDF ドキュメントを暗号化する場合、ファイルのユーザーに権限を設定する必要があります。 つまり、ユー ザー パスワードまたは通常の受信者と一致する証明書で開かれたドキュメントに付与する PDF アクセス許可 を指定する必要があります。

Docotic.Pdf ライブラリは、ユーザー権限のための PdfPermissions クラスを提供します。 このクラスは、アクセ ス許可を設定する 2 つの方法を提供します。 Flags プロパティを使用して、すべての権限を一度に設定で きます。 別の方法は、可能な権限ごとに個別のプロパティを使用することです。

PdfStandardEncryptionHandler オブジェクトを作成するとき は、UserPermissions プロパ ティを使用してアクセス許可にアクセスします。 PdfPublicKeyEncryptionHandler オブジェクトで は、PdfPermissions コンストラクターを使用します。 残りの設定は同じです。

次のコードは、C# で PDF のアクセス許可を設定する方法を示しています:

// デフォルトでは、権限オブジェクトはすべてを許可します。

// Flags プロパティを使用すると、特定のアクセス許可のみを付与できます。
var permisssions1 = new PdfPermissions();
permisssions1.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations;

// または、拒否したいアクセス許可のみを無効にすることもできます。
var permisssions2 = new PdfPermissions();
permisssions2.AssembleDocument = false;
permisssions2.CopyContents = false;
permisssions2.ExtractContents = false;
permisssions2.ModifyContents = false;
permisssions2.PrintDocument = false;
permisssions2.PrintFaithfulCopy = false;

// または、最初にすべての権限を無効にしてから、許可する権限のみを有効にすることもできます。
var permisssions3 = new PdfPermissions();
permisssions3.AllowEverything = false;
permisssions3.FillFormFields = true;
permisssions3.ModifyAnnotations = true;

// この時点では、permissions1、permissions2、および permissions3 オブジェクトは同じ権限を記述します。

.NET で AES-256 を使用して PDF を暗号化する

Docotic.Pdf は、AES-256 で PDF ドキュメントを暗号化できます。 この暗号化アルゴリズムは、ライブラリ でサポートされている中で最も強力です。 すべての PDF リーダーがアルゴリズムをサポートしているわけで はないことに注意してください。

PdfStandardEncryptionHandler または PdfPublicKeyEncryptionHandler オブジェクトを作成した 後、Algorithm プロパティを使用して暗号化 アルゴリズムを設定します。

次の C# コードは、PDF ドキュメントをパスワードで保護し、AES-256 を使用して暗号化する方法を示しています:

using (var pdf = new PdfDocument())
{
    // ....

    var handler = new PdfStandardEncryptionHandler("owner", "user");
    handler.Algorithm = PdfEncryptionAlgorithm.Aes256Bit;

    var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
    pdf.Save("encrypted", saveOptions);
}

暗号化と PDF/A

PDF/A ファイルの暗号化は許可されていません。 暗号化ハンドラーを設定し、文書保存オプションで PDF/Aを 生成するオプションをオンにしようとすると、ライブラリは PdfException タイプの例外をスローします。

PDF/A in a Nutshell PDF/A ファイルを保護する方法についてのアドバイスがあります:

PDF/A ファイルを保護したいユーザーは、これらのファイルの保存場所を保護する必要があります。 これは、たとえばフォルダーやドライブにパスワード保護を実装することで実現できます。