『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の保存」を参照
//入力PDFの取得は「PDFを開く」を参照
PtlParamOutput outputFile = new PtlParamOutput(outputFDFPath); //エクスポート先のパス
doc.exportAnnotsToFDF(outputFile); //パスを指定してエクスポート
//入力PDFの取得は「PDFを開く」を参照
PtlParamInput FdfToImport = new PtlParamInput(inportFDFPath); //インポート元のパス
doc.importAnnotsFromFDF(FdfToImport); //FDFファイルから注釈取り込み
// 出力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