/* * 受信者の証明書に対する PDF 文書の暗号化: * 1 個ないし複数の受信者証明書に対して PDF 文書を暗号化します。 * サンプル受信者証明書群がパッケージに含まれています。 * パッケージは、 この暗号化された文書を PLOP を用いて復号したり、Acrobat で開いたりするために必要となる * 照応するデジタル ID ファイル群も含んでいます。 * すべてのデジ タル ID ファイル(demo_recipient_1.p12 等)に対するパスワードは demo です。 * * 必要な製品 : PDFlib PLOP 5 又は PDFlib PLOP DS 5 * 必要なデータ : demo_signer_rsa_2048.p12 * demo_signer_rsa_2048.p12 は data ディレクトリにあります。 * demo_signer_rsa_2048.p12 のパスワードは demo です。 */ import java.io.*; import com.pdflib.plop; import com.pdflib.PLOPException; public class certsec { public static void main (String argv[]) { plop plop = null; /* 本サンプルに必要なデータが保存されているディレクトリを指定する */ String searchpath = "../data"; /* 受信者の証明書とアクセス許可を設定する*/ String[][] recipients = { /* 権限制限なし */ { "../data/demo_recipient_1.pem", "" }, /* フォームの入力及び署名のアクセス権限を付与し、 他の権限は制限する */ { "../data/demo_recipient_2.pem", "nomodify nocopy noannots noassemble" }, { "../data/demo_recipient_3.pem", "nomodify nocopy noannots noassemble" }, }; try { int doc; int r; String optlist; /* 実行ファイルに渡す引数(取込む既存PDF名・出力するPDF名)のチェックを行う */ if (argv.length < 2) { throw new Exception("usage: certsec "); } /* PLOP オブジェクトを作成する */ plop = new plop(); /* 読み込みたいファイルの入ったディレクトリを指定する */ optlist = "searchpath {" + searchpath + "} "; plop.set_option(optlist); /* @既存の PDF 文書を開く */ if ((doc = plop.open_document(argv[0], "")) == -1) { throw new Exception("Error: " + plop.get_errmsg()); } /* A受信者証明書を指定する */ for (r = 0; r < recipients.length; r++) { optlist = "certificate={filename={" + recipients[r][0] + "}} permissions={" + recipients[r][1] + "}"; if (plop.add_recipient(optlist) == -1) { /* 警告を出して、処理を続行する */ System.err.println("Warning: " + plop.get_errmsg()); } } /* B暗号化をした PDF を出力する */ optlist = "input=" + doc; if (plop.create_document(argv[1], optlist) == -1) { throw new Exception("Error: "+ plop.get_errmsg()); } /* CPDF文書を閉じる */ plop.close_document(doc, ""); } catch (PLOPException e) { System.err.println("PLOP exception occurred in certsec 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(); } } }