Pdfbox-encrypting-a-pdf-document

提供:Dev Guides
移動先:案内検索

PDFBox-PDFドキュメントの暗号化

前の章で、PDF文書に画像を挿入する方法を見てきました。 この章では、PDFドキュメントを暗号化する方法について説明します。

PDFドキュメントの暗号化

*StandardProtectionPolicy* および* AccessPermissionクラス*が提供するメソッドを使用して、PDFドキュメントを暗号化できます。
*AccessPermission* クラスは、アクセス許可を割り当てることによりPDFドキュメントを保護するために使用されます。 このクラスを使用すると、ユーザーが次の操作を実行できないように制限できます。
  • ドキュメントを印刷する

  • ドキュメントの内容を変更します

  • ドキュメントのコンテンツをコピーまたは抽出する

  • 注釈を追加または変更する

  • インタラクティブフォームフィールドに入力する

  • 視覚障害者がアクセスできるようにテキストとグラフィックを抽出する

  • ドキュメントを組み立てる

  • 品質の低下した印刷

    *StandardProtectionPolicy* クラスは、パスワードベースの保護をドキュメントに追加するために使用されます。

以下は、既存のPDFドキュメントを暗号化する手順です。

ステップ1:既存のPDFドキュメントの読み込み

*PDDocument* クラスの静的メソッド* load()*を使用して、既存のPDFドキュメントを読み込みます。 このメソッドは、以下に示すようにクラス名を使用して呼び出すことができる静的メソッドであるため、パラメーターとしてファイルオブジェクトを受け入れます。
File file = new File("path of the document")
PDDocument document = PDDocument.load(file);

ステップ2:アクセス許可オブジェクトの作成

以下に示すように、 AccessPermission クラスをインスタンス化します。

AccessPermission accessPermission = new AccessPermission();

ステップ3:StandardProtectionPolicyオブジェクトの作成

以下に示すように、所有者パスワード、ユーザーパスワード、および AccessPermission オブジェクトを渡すことにより、 StandardProtectionPolicy クラスをインスタンス化します。

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

ステップ4:暗号化キーの長さを設定する

以下に示すように、* setEncryptionKeyLength()*メソッドを使用して暗号化キーの長さを設定します。

spp.setEncryptionKeyLength(128);

ステップ5:許可の設定

StandardProtectionPolicyクラスの* setPermissions()メソッドを使用して権限を設定します。 このメソッドは、パラメーターとして *AccessPermission オブジェクトを受け入れます。

spp.setPermissions(accessPermission);

ステップ6:文書の保護

以下に示すように、 PDDocument クラスの* protect()メソッドを使用してドキュメントを保護できます。 *StandardProtectionPolicy オブジェクトをパラメーターとしてこのメ​​ソッドに渡します。

document.protect(spp);

ステップ7:ドキュメントを保存する

必要なコンテンツを追加したら、次のコードブロックに示すように、 PDDocument クラスの* save()*メソッドを使用してPDFドキュメントを保存します。

document.save("Path");

ステップ8:ドキュメントを閉じる

最後に、以下に示すように PDDocument クラスの* close()*メソッドを使用してドキュメントを閉じます。

document.close();

以下に示すように、 sample.pdf という名前のPDFドキュメントが C:/PdfBox_Examples/ というパスにあり、空のページがあるとします。

サンプルドキュメント

この例は、上記のPDFドキュメントを暗号化する方法を示しています。 ここでは、 sample.pdf という名前のPDFドキュメントを読み込み、暗号化します。 このコードを* EncriptingPDF.java。*という名前のファイルに保存します

import java.io.File;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {

   public static void main(String args[]) throws Exception {
     //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);

     //Creating access permission object
      AccessPermission ap = new AccessPermission();

     //Creating StandardProtectionPolicy object
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

     //Setting the length of the encryption key
      spp.setEncryptionKeyLength(128);

     //Setting the access permissions
      spp.setPermissions(ap);

     //Protecting the document
      document.protect(spp);

      System.out.println("Document encrypted");

     //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");
     //Closing the document
      document.close();

   }
}

次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。

javac EncriptingPDF.java
java EncriptingPDF

実行すると、上記のプログラムは指定されたPDFドキュメントを暗号化し、次のメッセージを表示します。

Document encrypted

ドキュメント sample.pdf を開こうとすると、暗号化されているため、できません。 代わりに、次のようにパスワードを入力してドキュメントを開くように求められます。

ドキュメントの暗号化