PLOP / PLOP DS サンプル集(クックブック)
暗号化されていない PDF 文書を、ユーザー・マスターパスワードを用いて暗号化します。
ユーザーパスワードは、PDF 文書を開く際に使用するパスワードです。PDF 文書の閲覧を制限します。
マスターパスワードは、PDF の機能制限を設定できる権限パスワードです。
マスターパスワードを設定すると、印刷や編集を制限することができ、パスワードを入力するまでセキュリティ設定を変更できません。
create_document() 関数のオプションでパスワードを設定します。
ユーザ―パスワードを設定するには userpassword オプションを使用し、
マスターパスワードを設定するには masterpassword オプションを使用します。
また、同関数の input オプションでパスワードを付与した既存 PDF を指定(open_document() で取得した文書ハンドル)します。
必要な製品:PDFlib PLOP 又は PDFlib PLOP DS
処理の流れ
①既存の PDF 文書を開く
open_document() 関数を使って、パスワードを付与したい既存の PDF ファイルを開きます。
②パスワードを付与して PDF を出力する
create_document() 関数で、オプションで指定したパスワードで保護した PDF を作成します。
③PDF 文書を閉じる
close_document() 関数で、PDF 文書を閉じれば、パスワードの付与は完了します。
ソースコードと出力結果
/*
* パスワードを用いて暗号化:
* 暗号化されていない PDF 文書を、ユーザー・マスターパスワードを用いて暗号化します。
*
* 必要な製品 : PDFlib PLOP 5 又は PDFlib PLOP DS 5
*/
import java.io.*;
import com.pdflib.PLOPException;
import com.pdflib.plop;
public class encrypt {
public static void main (String argv[]) {
plop plop = null;
try {
/* 既存 PDF に関する変数を用意する */
final String in_filename = "PLOP-datasheet.pdf";
final String in_password = "";
String optlist;
/* 出力する新規 PDF に関する変数を用意する */
final String out_filename = "PLOP-datasheet-encrypted.pdf";
final String out_master = "DEMO";
final String out_user = "demo";
final String permissions = "";
int doc;
/* 本サンプルに必要なデータが保存されているディレクトリを指定する */
final String searchpath = "../data";
/* PLOP オブジェクトを作成する */
plop = new plop();
/* 読み込みたいファイルの入ったディレクトリを指定する */
optlist = "searchpath={" + searchpath + "}";
plop.set_option(optlist);
/* ①既存の PDF 文書を開く */
optlist = "password {" + in_password + "} ";
if ((doc = plop.open_document(in_filename, optlist)) == -1) {
System.err.println("Error: " + plop.get_errmsg());
plop.delete();
System.exit(2);
}
/* ②パスワードを付与して PDF を出力する */
optlist = "masterpassword {" + out_master + "} userpassword {" +
out_user + "} permissions {" + permissions + "} " +"input="+ doc;
if (plop.create_document(out_filename, optlist) == -1) {
System.err.println("Error: " + plop.get_errmsg());
plop.delete();
System.exit(2);
}
/* ③PDF 文書を閉じる */
plop.close_document(doc, "");
} catch (PLOPException e) {
System.err.println("PLOP exception occurred in encrypt sample:");
System.err.println("[" + e.get_errnum() + "] " + e.get_apiname() + ": " + e.get_errmsg());
} catch (Exception e) {
System.err.println(e);
} finally {
/* PLOP オブジェクトを削除する */
if (plop != null) plop.delete();
}
}
}
(Apr 30, 2020)