
指定した種類のラバースタンプ注釈を挿入します。
ラバースタンプ注釈は様々なゴム印が押印されたかのように見せるためのグラフィック型の注釈です。PDF Tool API で使用できるスタンプの種類については、「表1・2 ISO 32000-12008で規定された標準名のアイコンタイプ」、「表1・3 Acrobatで用意されたアイコンタイプ」を参照してください。
注釈の挿入位置については配置矩形PtlRectによって設定します。(詳細は「『PDF CookBook』(第1巻)第2章PDF 文書の本文描画」の章説明文及び「『PDF CookBook』(第1巻)2.1.1 本文テキストの追加」を参照してください)
本サンプルプログラムでは、入力PDFの1ページ目にPtlAnnotStamp.ICON_TYPEで指定したアイコン種類で表わすスタンプを挿入します。挿入位置は固定です。
| ICON_APPROVED | 承認済 |
| ICON_AS_IS | 未変更 |
| ICON_CONFIDENTIAL | 親展 |
| ICON_DEPARTMENTAL | 内部用 |
| ICON_DRAFT | 草稿 |
| ICON_EXPERIMENTAL | 試用 |
| ICON_EXPIRED | 失効 |
| ICON_FINAL | 最終 |
| ICON_FOR_COMMENT | 推敲待 |
| ICON_FOR_PUBLIC_RELEASE | 公開用 |
| ICON_NOT_APPROVED | 却下 |
| ICON_NOT_FOR_PUBLIC_RELEASE | 非公開 |
| ICON_SOLD | 売却済 |
| ICON_TOP_SECRET | 極秘 |
| ICON_SB_APPROVED | 承認済 |
| ICON_SB_COMPLETED | 完了 |
| ICON_SB_CONFIDENTIAL | 極秘 |
| ICON_SB_DRAFT | 草稿 |
| ICON_SB_FINAL | 最終 |
| ICON_SB_FOR_COMMENT | 評価用 |
| ICON_SB_FOR_PUBLIC_RELEASE | 公開用 |
| ICON_SB_INFORMATIONONLY | 参照用 |
| ICON_SB_NOT_APPROVED | 却下 |
| ICON_SB_NOT_FOR_PUBLIC_RELEASE | 非公開 |
| ICON_SB_PRELIMINARYRESULTS | 試用結果 |
| ICON_SB_VOID | 無効 |
表にリストしたものの他に、カスタムアイコンのためにICON_CUSTOMという定数が用意されています。カスタムアイコンは、次項のカスタムスタンプを作成するとき指定します。また、ICON_UNKNOWNという定数が用意されていますが、これは注釈情報取得時に、アイコンのタイプがICON_APPROVED ~ ICON_SB_VOIDの間のどれにもあてはまらない場合に取得されます。
package cookbook;
import jp.co.antenna.ptl.*;
public class AppendAnnotStampDefault {
// そのクラスのusageを表示する関数
private static void printUsage(){
System.out.println("usage: java AppendAnnotStampDefault in-pdf-file" +
" out-pdf-file スタンプ種類");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 3) {
printUsage();
return;
}
// コマンドライン引数の処理
String stampKind = args[2];
try (PtlParamInput inputFile = new PtlParamInput(args[0]);
PtlParamOutput outputFile = new PtlParamOutput(args[1]);
PtlPDFDocument doc = new PtlPDFDocument()) {
// PDFファイルをロードします。
doc.load(inputFile);
try (PtlPages pages = doc.getPages()) { //ページコンテナの取得
// ページコンテナが空かどうか
if (pages.isEmpty()) {
System.out.println("ページコンテナが空\n");
return;
}
try (PtlPage page = pages.get(0);
PtlAnnots annots = page.getAnnots()) {
addPreDefinedStampAnnot(annots, stampKind);
}
}
// ファイルに保存します。
doc.save(outputFile);
}
catch (PtlException pex) {
System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() +
"\n " + pex.getErrorMessage());
}
catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
catch (Error ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
finally {
System.out.println("-- 完了 --");
}
}
public static void addPreDefinedStampAnnot(PtlAnnots annots, String stampKind)
throws PtlException, Exception, Error {
try (PtlAnnotStamp stampAnnot1 = new PtlAnnotStamp();
PtlRect rect = new PtlRect(10.0f, 270.0f, 60.0f, 290.0f)) {
stampAnnot1.setRect(rect);
stampAnnot1.setIconType(PtlAnnotStamp.ICON_TYPE.valueOf(stampKind));
stampAnnot1.setAnnotFlags(PtlAnnot.FLAG_PRINT);
annots.append(stampAnnot1);
}
}
}
AppendAnnotStampDefault.java
C:\samples>java cookbook.AppendAnnotStampDefault usage: java AppendAnnotStampDefault in-pdf-file out-pdf-file スタンプ種類 C:\samples>java cookbook.AppendAnnotStampDefault blank.pdf blank-approved.pdf ICON_APPROVED -- 完了 -- C:\samples>java cookbook.AppendAnnotStampDefault blank.pdf blank-as-is.pdf ICON_AS_IS -- 完了 -- C:\samples>java cookbook.AppendAnnotStampDefault blank.pdf blank-sb-approved.pdf ICON_SB_APPROVED -- 完了 -- C:\samples>java cookbook.AppendAnnotStampDefault blank.pdf blank-sb-completed.pdf ICON_SB_COMPLETED -- 完了 --
次図は4種類のラバースタンプ注釈を貼り付けた結果を示しています。
