/* Antenna House PDF Tool API V8.0 .NET Interface sample program 概要:ファイル添付とセキュリティ設定 Copyright 2026- Antenna House, Inc. */ using System; using PdfTkNet; namespace CombiEmbeddedEncrypt { class Program { static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("usage: CombiEmbeddedEncrypt.exe in-pdf-file out-pdf-file embedded-file"); return; } try { using (PtlParamInput inputFile = new PtlParamInput(args[0])) using (PtlParamOutput outputFile = new PtlParamOutput(args[1])) using (PtlPDFDocument doc = new PtlPDFDocument()) { string embeddedfilename = args[2]; // PDFファイルをロードします。 doc.load(inputFile); // 添付ファイルコンテナの取得 using (PtlEmbeddedFiles embeddedfiles = doc.getEmbeddedFiles()) // PDFの添付ファイル using (PtlEmbeddedFile embeddedfile = new PtlEmbeddedFile()) { // 添付ファイル名の設定 embeddedfile.setFileName(embeddedfilename); // 添付するファイルの読み込み using (PtlParamInput input = new PtlParamInput(embeddedfilename)) { embeddedfile.readFile(input); } // 添付ファイルの追加 embeddedfiles.append(embeddedfile); } // 256 bit AES using (PtlEncryptStandard256AES enc = new PtlEncryptStandard256AES()) using (PtlEncryptPermissionType2 typ = new PtlEncryptPermissionType2()) { // 文書の全てのコンテンツを暗号化 enc.setEncryptComponent(PtlEncrypt.ENCRYPT_COMPONENT.ENCRYPT_ALL); // オーナーパスワード値の設定 enc.setOwnerPassword("pass123"); // 印刷権限の設定 // PERM_PRINT_LOW = 1, /* 低解像度 */ typ.setPrint(PtlEncryptPermissionType2.PERMISSION_PRINT.PERM_PRINT_LOW); // テキスト、画像、その他の内容のコピーを有効にするかどうかの設定 typ.setCopy(true); // ユーザアクセス許可フラグの設定 enc.setPermission(typ); // 暗号化設定 doc.setEncrypt(enc); } // ファイルに保存します。 doc.save(outputFile); } } catch (PtlException pex) { Console.WriteLine("ErrorCode = " + pex.getErrorCode() + " : " + pex.getErrorMessageJP()); pex.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.WriteLine("-- 完了 --"); } } } }