/* Antenna House PDF Tool API V7.0 .NET Interface sample program 概要:テキスト注釈の作成 Copyright 2013-2021 Antenna House, Inc. */ using System; using PdfTkNet; namespace AppendAnnotText { class Program { static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("usage: AppendAnnotText.exe in-pdf-file out-pdf-file"); return; } try { using (PtlParamInput inputFile = new PtlParamInput(args[0])) using (PtlParamOutput outputFile = new PtlParamOutput(args[1])) using (PtlPDFDocument doc = new PtlPDFDocument()) { //PDFファイルをロードします。 doc.load(inputFile); //ページコンテナの取得 using (PtlPages pages = doc.getPages()) { //ページコンテナが空かどうか if (pages.isEmpty()) { Console.WriteLine("ページコンテナが空"); return; } // 1ページ目の取得 using (PtlPage page = pages.get(0)) { // テキスト注釈追加 addAnnotText(page); } } // ファイルに保存します。 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 addAnnotText(PtlPage page) { //注釈コンテナの取得 using (PtlAnnots annots = page.getAnnots()) { //PDFのテキスト注釈 using (PtlAnnotText annottext = new PtlAnnotText()) using (PtlAnnotPopup annotpopup = new PtlAnnotPopup()) { //------------------------------------------------------------ //アイコンタイプ設定 ICON_COMMENT = 1, /* コメント */ annottext.setIconType(PtlAnnotText.ICON_TYPE.ICON_COMMENT); //矩形座標を設定 座標の単位はmmで原点(0,0)は左下 using (PtlRect rectSize = annottext.getRect()) using (PtlRect rectAnnot = new PtlRect(50.0f, 50.0f, 50.0f + rectSize.getRight(), 50.0f + rectSize.getTop())) { annottext.setRect(rectAnnot); } //内容を設定(注釈用に表示されるテキスト・可読な形式での注釈コンテンツの代替説明) annottext.setTextContents("内容を設定(注釈用に表示されるテキスト・可読な形式での注釈コンテンツの代替説明)"); //日時の設定(2013/01/01 00:00:00) using (PtlDate date = new PtlDate(2013, 1, 1, 0, 0, 0)) { annottext.setDate(date); } //注釈フラグを設定(論理和) FLAG_NOROTATE = 0x00000010, /* 注釈の外観をページにあわせて回転しません。 */ annottext.setAnnotFlags(PtlAnnotText.ANNOT_FLAGS.FLAG_NOROTATE); //色を設定 setColor(const PtlColorDeviceRGB& color); using (PtlColorDeviceRGB color = new PtlColorDeviceRGB(0.0f, 0.0f, 1.0f)) { annottext.setColor(color); } //境界線スタイルを設定 BORDER_SOLID = 1, /* 実線(注釈を囲む実線の矩形) */ annottext.setBorderStyle(PtlAnnotText.BORDER_STYLE.BORDER_SOLID); //境界線幅を設定 BORDER_WIDTH_THIN = 1, /* 細い */ annottext.setBorderWidth(PtlAnnotText.BORDER_LINE_WIDTH.BORDER_WIDTH_THIN); //------ //ポップアップウィンドウのタイトル文字列設定 annottext.setMarkUpTitle("ポップアップウィンドウのタイトル文字列"); //サブジェクトの短い説明設定 annottext.setMarkUpSubj("サブジェクトの短い説明設定"); //注釈生成日時の設定(2012/12/31 23:59:59) using (PtlDate dateMarkup = new PtlDate(2012, 12, 31, 23, 59, 59)) { annottext.setMarkUpDate(dateMarkup); } //不透明度を設定 0.0 ~ 1.0。0.0が透明、1.0が不透明 annottext.setMarkUpCA(0.8f); //------ //■PtlAnnotPopup //矩形座標を設定 座標の単位はmmで原点(0,0)は左下 using (PtlRect rectPopup = new PtlRect(100.0f, 50.0f, 150.0f, 150.0f)) { annotpopup.setRect(rectPopup); } //オープン状態を設定 true=オープン状態 annotpopup.setOpenState(true); //ポップアップ注釈を設定 annottext.setAnnotPopUp(annotpopup); //------ //注釈の追加 annots.append(annottext); } } } } }