2.1.5 タイリング設定

images/WaterMarkSetTiling-top.png

狙い・効果

透かしをタイリング(縦と横に繰り返して配置)するかどうかを指定します。

処理の概要

透かしの配置領域の中で透かしをタイリングして配置するかどうかを指定します。また、最初の1つの透かしの配置を、透かしの寄せで指定します。

注意:

タイリング指定をオンにした場合、その透かしはAcrobat®互換にすることができなくなります。透かしのAcrobat®互換の詳細に関しては「『PDF CookBook』(第5巻)第8章 透かしのAcrobat®互換対応と機能追加」を参照してください。

『PDF Tool API V5』では、テキスト透かしに角度を指定しても、タイリングすると角度指定は無視されます。『PDF Tool API V6.0』以降では角度指定が反映されます。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class WaterMarkSetTiling {
    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.println("usage: java WaterMarkSetTiling in-pdf-file out-pdf-file set-tiling");
        System.out.println("set-tiling :\n 0 : 透かしを並べて配置しない。1 : 並べて配置する。");
    }

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

        // コマンドライン引数の読み取り・判定
        boolean setTiling;
        try {
            setTiling = readBoolArgs(args[2], "set-tilingは0か1で指定してください。");
        }
        catch (IllegalArgumentException ex) {
            System.out.println(ex.getMessage());
            printUsage(); // usageメッセージの表示
            return;
        }
        ...【WaterMarkSetMargin.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...

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

    public static void appendWaterMarkSetTiling(PtlPDFDocument doc, boolean setTiling)
        throws PtlException, Exception, Error {
        try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
            // 透かしをタイリングして配置するかどうかの設定
            waterMarkText.setTiling(setTiling);

        ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
           配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
             ・タイリング配置以外の、テスト用テキスト透かしに共通の設定をセットする。
             ・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・
              フォント・文字の色・縁取りの色・対角線配置の有無・配置角度
             ・PtlPDFDocument docにテキスト透かしを設定する】...
        }
    }
        ...【readBoolArgs()の処理はWaterMarkSetPageRange.javaと共通のため省略。
             ・0 または1 を入力されたargs により、true またはfalse を返すメソッド。
             ・argsが0か1でなかった場合に出力されるエラーメッセージを指定する。】...
}

プログラムファイル名

WaterMarkSetTiling.java

入出力操作の例

images/WaterMarkSetTiling.png

次図は左がテキスト透かしをタイリング設定しない場合、右がタイリング設定した場合です。

images/WaterMarkSetTiling-example.png

図2・5 透かしのタイリング(有無)