/* Antenna House PDF Tool API V6.0 .NET Interface sample program 概要:セキュリティの設定 Copyright 2013-2021 Antenna House, Inc. */ using System; using PdfTkNet; namespace Encrypt { class Program { static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("usage: Encrypt.exe in-pdf-file out-pdf-file 暗号化種類 (in-pdf-password)\n"); Console.WriteLine("暗号化種類\n0 : 40 bit RC4 1 : 128 bit AES 2 : 256 bit AES \n"); return; } switch (args[2]) { case "0": case "1": case "2": break; default: Console.WriteLine("usage: Encrypt.exe in-pdf-file out-pdf-file 暗号化種類 (in-pdf-password)\n"); Console.WriteLine("暗号化種類\n0 : 40 bit RC4 1 : 128 bit AES 2 : 256 bit AES \n"); return; } try { using (PtlParamInput inputFile = new PtlParamInput(args[0])) using (PtlParamOutput outputFile = new PtlParamOutput(args[1])) using (PtlPDFDocument doc = new PtlPDFDocument()) { if (args.Length > 3) { string password = (string)args[3]; // パスワードのセット doc.setPassword(password); } // PDFファイルをロードします。 doc.load(inputFile); // セキュリティ設定 switch (args[2]) { case "0": // 128 bit RC4 using (PtlEncryptStandard128RC4 enc = new PtlEncryptStandard128RC4()) { // 暗号化情報の設定 setEncrypt(enc); // 暗号化の設定 doc.setEncrypt(enc); } break; case "1": // 128 bit AES using (PtlEncryptStandard128AES enc = new PtlEncryptStandard128AES()) { // 暗号化情報の設定 setEncrypt(enc); // 暗号化の設定 doc.setEncrypt(enc); } break; case "2": // 256 bit AES using (PtlEncryptStandard256AES enc = new PtlEncryptStandard256AES()) { // 暗号化情報の設定 setEncrypt(enc); // 暗号化の設定 doc.setEncrypt(enc); } break; } // ファイルに保存します。 doc.save(outputFile); } } catch (PtlException pex) { Console.WriteLine(pex.getErrorCode() + " : " + pex.getErrorMessageJP()); pex.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.WriteLine("-- 完了 --"); } } static void setEncrypt(PtlEncryptStandard enc) { // 文書の全てのコンテンツを暗号化 enc.setEncryptComponent(PtlEncrypt.ENCRYPT_COMPONENT.ENCRYPT_ALL); // ユーザパスワード値の設定 enc.setUserPassword("pass"); // オーナーパスワード値の設定 enc.setOwnerPassword("test"); using (PtlEncryptPermissionType2 typ = new PtlEncryptPermissionType2()) { // 印刷権限の設定 // PERM_PRINT_LOW = 1, /* 低解像度 */ typ.setPrint(PtlEncryptPermissionType2.PERMISSION_PRINT.PERM_PRINT_LOW); // 変更権限の設定 // PERM_MODIFY_ASSEMBLEDOC = 1, /* ページの挿入、削除、回転 */ typ.setModify(PtlEncryptPermissionType2.PERMISSION_MODIFY.PERM_MODIFY_ASSEMBLEDOC); // テキスト、画像、その他の内容のコピーを有効にするかどうかの設定 // false: 有効にしない typ.setCopy(false); // スクリーンリーダーデバイスのテキストアクセスを有効にするかどうかの設定 // true: 有効にする typ.setAccessibility(true); //ユーザアクセス許可フラグの設定 enc.setPermission(typ); } } } }