2.1.4 透かしのZオーダーの指定

images/WaterMarkSetZorder-top.png

狙い・効果

透かしのZオーダー透かしを本文の前面に配置するか、透かしを本文の背面に配置する背後に配置するか)を指定します。

処理の概要

透かしのZオーダーは次表の列挙型定数で指定します。

表2・2 透かしのZオーダー
列挙型定数説明
ZORDER_BACK背面
ZORDER_FRONT前面(デフォルト値)

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import java.io.*;
import jp.co.antenna.ptl.*;


public class WaterMarkSetZorder {

    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.println("usage: java WaterMarkSetZorder in-pdf-file out-pdf-file z-order");
        System.out.println("z-order : 透かしのZオーダー\n 0 : 背面, 1 : 前面");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3) {
            printUsage(); //usageの表示
            return;
        }

        int zOrder = Integer.parseInt(args[2]);

        //コマンドライン引数の判定
        switch(zOrder){
        case 0:
        case 1:
            break;
        default:
            System.out.println("z-orderは0か1の数値で指定してください。");
            printUsage(); // usageメッセージの表示
            return;
        }
        ...【WaterMarkSetRect.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定
             ・BufferedReader brを設定してキー入力読み取りを準備する】...

            // 透かしの追加
            appendWaterMarkSetZorder(doc, br, zOrder);
        ...【EncryptWithUserPass.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...
    }

    public static void appendWaterMarkSetZorder(PtlPDFDocument doc, BufferedReader br, int zOrder)
        throws PtlException, Exception, Error {
        try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
            // 透かしのZオーダーの設定 
            switch(zOrder){
            case 0:
                waterMarkText.setZorder(PtlParamWaterMark.ZORDER.ZORDER_BACK);
                break;
            case 1:
                waterMarkText.setZorder(PtlParamWaterMark.ZORDER.ZORDER_FRONT);
                break;
            }
        ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
           配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
             ・Zオーダー以外の、テスト用テキスト透かしに共通の設定をセットする。
             ・設定項目:配置位置・名前・ページ範囲・不透明度・文字列・
              タイリング・フォント・文字の色・縁取りの色・対角線配置の有無・配置角度
             ・PtlPDFDocument docにテキスト透かしを設定する】...
        }
    }
}

プログラムファイル名

WaterMarkSetZorder.java

入出力操作の例

images/WaterMarkSetZorder.png

images/WaterMarkSetZorder-example.png

図2・4 ページ範囲を指定して透かしを配置

図の上は透かしをテキストの背後、下が透かしをテキストの前面に配置しています。本プログラム例では透かしが不透明ですので、下はテキストが透かしの背後に隠れます。