Pdfbox-encrypting-a-pdf-document
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 を開こうとすると、暗号化されているため、できません。 代わりに、次のようにパスワードを入力してドキュメントを開くように求められます。