10-5 注釈

概説:

『PDF Tool API』では注釈の作成の他、注釈の削除、注釈のエクスポート・インポートが可能です。

『PDF Tool API』で実施可能な加工例:

注釈の基本要素

注釈コンテナの取得と注釈の追加

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
PtlAnnots annots = page.getAnnots();        //注釈コンテナの取得

//ここには追加する予定の注釈を表すクラス newAnnot パラメータを設定する記述が入る
annots.append(newAnnot);                    //注釈コンテナに注釈を追加する

// 出力PDFの保存は「PDFの保存」を参照

ポップアップ注釈の指定

マークアップ注釈の子クラスである注釈を作成する場合、それが持つポップアップ注釈のパラメータを指定できる。

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
//注釈を表すクラス newAnnot の取得はそれぞれの注釈の解説を参照
PtlAnnotPopup annotPopup = new PtlAnnotPopup();             //ポップアップ注釈
PtlRect rectPopup = new PtlRect(left, bottom, right, top);  //ポップアップを開く先の矩形
annotPopup.setRect(rectPopup);          //矩形の設定
annotPopup.setOpenState(true);          //PDFを開いた際にポップアップが開いているか否か

newAnnot.setMarkUpTitle(title);         //ポップアップウィンドウのタイトル文字列
newAnnot.setMarkUpSubj(subject);        //サブジェクトの短い説明
newAnnot.setTextContents(textContents); //ポップアップ内の本文指定
newAnnot.setAnnotPopUp(annotpopup);     //ポップアップ注釈の設定
//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照

注釈の応用

ラバースタンプ注釈の作成

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
PtlAnnotStamp stampAnnot = new PtlAnnotStamp();                 //スタンプ注釈
PtlRect outputRect = new PtlRect(left, bottom, right, top);     //注釈の矩形
stampAnnot.setRect(rect);                                       //矩形の設定
stampAnnot.setIconType(PtlAnnotStamp.ICON_TYPE.ICON_APPROVED);  //スタンプの模様の指定

//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

カスタムスタンプ注釈の追加

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
//スタンプ注釈用クラスの作成は「ラバースタンプ注釈の作成」を参照
stampAnnot.setIconType(PtlAnnotStamp.ICON_TYPE.ICON_CUSTOM);  //スタンプの模様の指定
PtlPage pageCustomStamp; //カスタムスタンプにするための何らかのページを用意する
stampAnnot.setPage(pageCustomStamp);

//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

リンク注釈の追加

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
PtlAnnotLink annotLink = new PtlAnnotLink();        //リンク注釈
PtlActionGoTo acttiongoto = new PtlActionGoTo();    //GoToアクション
PtlDestFit destfit = new PtlDestFit();              //アクションの宛先用クラス
PtlRect outputRect = new PtlRect(left, bottom, right, top); //リンク注釈の指定範囲

destfit.setPageNumber(pages.getCount() - 1);//ここでは最終ページを宛先に指定
acttiongoto.setDest(destfit);               //指定した宛先をアクションに設定
annotLink.setAction(acttiongoto);           //リンク注釈にアクションを設定
annotLink.setRect(rect);                    //リンク注釈の矩形指定

//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

テキスト注釈の作成

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
PtlAnnotText annotText = new PtlAnnotText();                //テキスト注釈
PtlRect rectAnnot = new PtlRect(left, bottom, right, top);  //テキスト注釈アイコンの位置
annotText.setRect(rectAnnot);                               //アイコンの矩形を指定
annotText.setIconType(PtlAnnotText.ICON_TYPE.ICON_COMMENT); //テキスト注釈用アイコン形式指定
//ポップアップ注釈のパラメータ指定は「ポップアップ注釈の指定」を参照
//(テキスト注釈の中身は「ポップアップ注釈の指定」のsetTextContents()で指定される

//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

ファイル添付注釈の作成

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
PtlAnnotFileAttachment annotFileAttachment = new PtlAnnotFileAttachment(); //ファイル添付注釈
PtlParamInput attachmentFile = new PtlParamInput(attachmentFilePath);      //添付ファイルのパス
PtlRect rectAnnot = new PtlRect(left, bottom, right, top);                 //注釈アイコンの矩形

annotFileAttachment.setFileName(attachmentFileName);                   //表示されるファイル名
annotFileAttachment.readFile(attachmentFile);                          //添付するファイル指定
annotFileAttachment.setRect(rectAnnot);                                //アイコンの矩形を指定
annotFileAttachment.setIconType(PtlAnnotFileAttachment.ICON_TYPE.ICON_PUSHPIN); //アイコン形式指定
//ポップアップ注釈のパラメータ指定は「ポップアップ注釈の指定」を参照

//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

ハイライト注釈の作成

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
PtlAnnotHighlight annotHighlight = new PtlAnnotHighlight();     //ハイライト注釈
PtlColorDeviceRGB color = new PtlColorDeviceRGB(colorR, colorG, colorB);
annotHighlight.setColor(color);                 //ハイライト注釈の色指定
annotHighlight.setMarkUpCA(opacity);            //ハイライト注釈の不透明度指定

PtlQuadPoints annotQuadPoints = annotHighlight.getQuadPoints(); //注釈が持つQuadPointコンテナ
PtlPoint topLeft = new PtlPoint(leftX, topY);                   //QuadPointの四隅(上左)
PtlPoint topRight = new PtlPoint(rightX, topY);                 //QuadPointの四隅(上右)
PtlPoint bottomLeft = new PtlPoint(leftY, bottomY);             //QuadPointの四隅(下左)
PtlPoint bottomRight = new PtlPoint(rightX, bottomY);           //QuadPointの四隅(下右)
PtlQuadPoint outputQuadPoint = new PtlQuadPoint(topLeft, topRight, bottomLeft, bottomRight); //注釈用QuadPoint
annotQuadPoints.append(outputQuadPoint);                        //QuadPointの追加

//ポップアップ注釈のパラメータ指定は「ポップアップ注釈の指定」を参照
//注釈の追加は「注釈コンテナの取得と注釈の追加」を参照
// 出力PDFの保存は「PDFの保存」を参照

文字列検索してハイライト注釈を付ける

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照

//検索設定指定用クラス
PtlParamSearchTextAndHighlight paramSearchTextHighlight = new PtlParamSearchTextAndHighlight();
PtlColorDeviceRGB color = new PtlColorDeviceRGB(colorR, colorG, colorB);
paramSearchTextHighlight.appendText(textToSearch);  //ハイライト注釈に指定したいキーワードを指定
paramSearchTextHighlight.setColor(color);           //ハイライト注釈の色指定
paramSearchTextHighlight.setOpacity(opacity);       //ハイライト注釈の不透明度指定

//ドキュメント全体を検索し、ヒットした部分にハイライト挿入実行
doc.searchTextAndDoProcess(paramSearchTextHighlight);

指定したページだけ検索することもできます。

//ページを検索し、ヒットした部分にハイライト挿入実行
page.searchTextAndDoProcess(paramSearchTextHighlight);

注釈タイプの判別をして情報を取得する

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照

PtlAnnot annot = annots.get(annotNumToGetInfo);     //注釈の取得
annot.getTextContents();
annot.getRect();
annot.getDate();
annot.getAnnotFlags();
annot.getBorderStyle();
annot.getBorderWidth();

annot.isMarkup();            //マークアップ注釈であるか否かの判別
PtlAnnotMarkup annotMarkup = (PtlAnnotMarkup)annot;
annotMarkup.getMarkUpTitle();
annotMarkup.getMarkUpSubj();
annotMarkup.getMarkUpDate();

annotMarkup.hasAnnotPopup(); //ポップアップ注釈が指定済みか否かの判別
PtlAnnotPopup popup = annotMarkup.getAnnotPopup();
popup.getOpenState();

annot.getType();             //注釈種別の取得

//テキスト注釈の場合
PtlAnnotText annotText = (PtlAnnotText)annot;
annotText.getIconType();
annotText.getIconName();

//リンク注釈の場合
PtlAnnotLink annotLink = (PtlAnnotLink)annot;
annotLink.getHighlightMode();
annotLink.getDest();
annotLink.getAction();

//スタンプ注釈の場合
PtlAnnotStamp annotStamp = (PtlAnnotStamp)annot;
annotStamp.getIconType();
annotStamp.getIconName();

//ファイル添付注釈の場合
PtlAnnotFileAttachment annotFileAttachment = (PtlAnnotFileAttachment)annot;
annotFileAttachment.getIconType();
annotFileAttachment.getIconName();
annotFileAttachment.getFileName();
PtlParamOutput outputAttach = new PtlParamOutput(attachmentOutputPath);
annotFileAttachment.writeFile(outputAttach);

注釈の削除

//入力PDFの取得は「PDFを開く」を参照
//ページコンテナ・ページ取得は「ページ情報を操作する」を参照
//注釈コンテナの取得は「注釈コンテナの取得と注釈の追加」を参照
annots.remove(annotNumToRemove);

// 出力PDFの保存は「PDFの保存」を参照

注釈情報のエクスポート:FDFファイル

//入力PDFの取得は「PDFを開く」を参照
PtlParamOutput outputFile = new PtlParamOutput(outputFDFPath);  //エクスポート先のパス
doc.exportAnnotsToFDF(outputFile);                              //パスを指定してエクスポート

注釈情報のインポート:FDFファイル

//入力PDFの取得は「PDFを開く」を参照
PtlParamInput FdfToImport = new PtlParamInput(inportFDFPath);   //インポート元のパス
doc.importAnnotsFromFDF(FdfToImport);                           //FDFファイルから注釈取り込み

// 出力PDFの保存は「PDFの保存」を参照

注釈情報のインポート:PDFファイル

//入力PDFの取得は「PDFを開く」を参照
PtlParamInput PdfToImport = new PtlParamInput(importPDFPath);   //インポート元のパス
doc.importAnnotsFromPDF(PdfToImport);                           //PDFファイルから注釈取り込み

// 出力PDFの保存は「PDFの保存」を参照

参考:

『PDF Tool API』の解説本『PDF CookBook』では、以下のようなプログラム例を提示しています。

・ラバースタンプ注釈の作成

『PDF CookBook(第2巻)1.1.1 ラバースタンプ注釈の作成』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0004.html

・カスタムスタンプ注釈の作成

『PDF CookBook(第2巻)1.1.2 カスタムスタンプ注釈作成(画像・PDF設定)』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0005.html

・リンク注釈の追加

『PDF CookBook(第2巻)1.1.4 リンク注釈の追加』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0007.html

・テキスト注釈の作成

『PDF CookBook(第2巻)1.1.5 テキスト注釈の作成』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0008.html

・ファイル添付注釈の作成

『PDF CookBook(第2巻)1.1.7 ファイル添付注釈の作成』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0010.html

・ハイライト注釈の作成

『PDF CookBook(第2巻)1.1.8 ハイライト注釈の作成』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0011.html

・テキスト検索してハイライト注釈を付ける

『PDF CookBook(第2巻)1.1.9 テキスト検索してハイライト注釈』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0012.html

・注釈タイプの判別をして情報を取得する

『1.2.1 注釈の個数・全ての注釈に共通した項目の情報を取得』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0015.html

『1.2.2 マークアップ注釈の情報を取得』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0016.html

『PDF CookBook(第2巻)1.2.3 注釈タイプの判別をして特有の情報を取得する』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0017.html

・注釈の削除

『PDF CookBook(第2巻)1.3.1 注釈の削除』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0019.html

・注釈情報のエクスポート:FDFファイル

『PDF CookBook(第2巻)2.1.1 注釈情報をFDFファイルにエクスポート』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0022.html

・注釈情報のインポート:FDFファイル

『PDF CookBook(第2巻)2.1.2 FDFファイルの注釈情報をインポート』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0023.html

・注釈情報のインポート:PDFファイル

『PDF CookBook(第2巻)2.2.1 PDFファイルからの注釈データインポート』

https://www.antenna.co.jp/ptl/cookbook/vol4/i02-0025.html

Please enter alt text.