/* Antenna House PDF Tool API V7.0 .NET Interface sample program 概要:ファイル添付注釈の作成 Copyright 2013-2021 Antenna House, Inc. */ using System; using PdfTkNet; namespace AppendAnnotFileAttachment { class Program { static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("usage: AppendAnnotFileAttachment.exe in-pdf-file out-pdf-file attachment-file"); return; } try { using (PtlParamInput inputFile = new PtlParamInput(args[0])) using (PtlParamOutput outputFile = new PtlParamOutput(args[1])) using (PtlPDFDocument doc = new PtlPDFDocument()) { string attachmentfilename = args[2]; //PDFファイルをロードします。 doc.load(inputFile); //ページコンテナの取得 using (PtlPages pages = doc.getPages()) { //ページコンテナが空かどうか if (pages.isEmpty()) { Console.WriteLine("ページコンテナが空"); return; } //ページの取得 using (PtlPage page = pages.get(0)) { // 注釈の設定 addAnnotFileAttachment(page, attachmentfilename); } } // ファイルに保存します。 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 addAnnotFileAttachment(PtlPage page, String attachmentfilename) { // 注釈コンテナの取得 using (PtlAnnots annots = page.getAnnots()) { // PDFのファイル添付注釈 using (PtlAnnotFileAttachment annotfileattachment = new PtlAnnotFileAttachment()) using (PtlAnnotPopup annotpopup = new PtlAnnotPopup()) // Popupは親注釈と同じスコープでなければなりません { // アイコンタイプ設定 ICON_PUSHPIN = 3, /* プッシュピン */ annotfileattachment.setIconType(PtlAnnotFileAttachment.ICON_TYPE.ICON_PUSHPIN); // 矩形座標を設定 座標の単位はmmで原点(0,0)は左下 using (PtlRect rectSize= annotfileattachment.getRect()) using (PtlRect rectAnnot = new PtlRect(50.0f, 50.0f, 50.0f + rectSize.getRight(), 50.0f + rectSize.getTop())) { annotfileattachment.setRect(rectAnnot); } // 内容を設定(注釈用に表示されるテキスト・可読な形式での注釈コンテンツの代替説明) annotfileattachment.setTextContents("注釈用に表示されるテキスト・可読な形式での注釈コンテンツの代替説明"); // 日時の設定(2000/5/5 12:00:00) using (PtlDate date = new PtlDate(2000, 5, 5, 12, 0, 0)) { annotfileattachment.setDate(date); } // 色を設定 using (PtlColorDeviceRGB color = new PtlColorDeviceRGB(1.0f, 0.0f, 1.0f)) { annotfileattachment.setColor(color); } // 境界線スタイルを設定 BORDER_SOLID = 1, /* 実線(注釈を囲む実線の矩形) */ annotfileattachment.setBorderStyle(PtlAnnotText.BORDER_STYLE.BORDER_SOLID); // 境界線幅を取得 BORDER_WIDTH_THICK = 3 /* 太い */ annotfileattachment.setBorderWidth(PtlAnnotText.BORDER_LINE_WIDTH.BORDER_WIDTH_THICK); // ポップアップウィンドウのタイトル文字列設定 annotfileattachment.setMarkUpTitle("ポップアップウィンドウのタイトル文字列"); // サブジェクトの短い説明設定 annotfileattachment.setMarkUpSubj("サブジェクトの短い説明設定"); // 注釈生成日時の設定 using (PtlDate date = new PtlDate(2000, 4, 1, 23, 59, 59)) { annotfileattachment.setMarkUpDate(date); } //不透明度を設定 0.0 ~ 1.0。0.0が透明、1.0が不透明 annotfileattachment.setMarkUpCA(1.0f); // 添付ファイル名設定 annotfileattachment.setFileName(attachmentfilename); // 添付するファイルの読み込み using (PtlParamInput attachmentfile = new PtlParamInput(attachmentfilename)) { annotfileattachment.readFile(attachmentfile); } //------ // 矩形座標を設定 座標の単位はmmで原点(0,0)は左下 using (PtlRect rectPopup = new PtlRect(100.0f, 100.0f, 150.0f, 150.0f)) { annotpopup.setRect(rectPopup); } // オープン状態を設定 true=オープン状態 annotpopup.setOpenState(true); // ポップアップ注釈を設定 annotfileattachment.setAnnotPopUp(annotpopup); //------ // 注釈の追加 annots.append(annotfileattachment); } } } } }