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

images/AppendAnnotStampDefault-top.png

狙い・効果

指定した種類のラバースタンプ注釈を挿入します。

処理の概要

ラバースタンプ注釈は様々なゴム印が押印されたかのように見せるためのグラフィック型の注釈です。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で指定したアイコン種類で表わすスタンプを挿入します。挿入位置は固定です。

PDF Tool APIの主な機能

表1・2 ISO 32000-12008で規定された標準名のアイコンタイプ
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
極秘
表1・3 Acrobatで用意されたアイコンタイプ
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種類のラバースタンプ注釈を貼り付けた結果を示しています。

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