2.4.1 色透かしの挿入

images/ColorWaterMarkAppend-top.png

狙い・効果

配置領域をカラーで塗りつぶす透かしを挿入します。

処理の概要

PDF文書の指定した配置領域にカラーで塗りつぶした透かしを追加します。追加に必要な主な要素は以下の通りです。

本プログラム例では、塗りつぶす色をコマンドラインで指定します。色指定方法は、2.2.7 透かしの文字色と同じです。

『PDF Tool API』の主な機能

PtlParamWaterMark.APIsetMargin() :透かしを配置するときの空きの設定 *PtlParamWaterMark.APIsetZorder() :透かしのZオーダーの設定 *PtlParamWaterMark.APIsetOpacity() :透かしの不透明度の設定 *PtlParamWaterMarkColor.APIsetColor() :透かしに指定する色の設定。設定しない場合はデフォルト値として白が使用される

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ColorWaterMarkAppend {
    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.print("usage: java ColorWaterMarkAppend in-pdf-file out-pdf-file");
        System.out.println(" colorR colorG colorB\n");
        System.out.println("color-R, color-G, color-B :");
        System.out.println("0.0~1.0の数値で指定。それぞれの色について1.0が最大");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3) {
            printUsage(); // usageメッセージの表示
            return;
        }
        // コマンドライン引数の読み取り
        float colorR = Float.parseFloat(args[2]);
        float colorG = Float.parseFloat(args[3]);
        float colorB = Float.parseFloat(args[4]);

        ...【WaterMarkSetMargin.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...

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

    public static void appendColorWaterMark(PtlPDFDocument doc, float colorR,
                                            float colorG, float colorB)
        throws PtlException, Exception, Error {
        try (PtlParamWaterMarkColor waterMarkColor = new PtlParamWaterMarkColor()) {
            //透かしを配置する矩形の設定
            waterMarkColor.setMargin(10.0f, 10.0f, 10.0f, 10.0f);
            //透かしに指定する色の設定
            try (PtlColorDeviceRGB color = new PtlColorDeviceRGB(colorR, colorG, colorB)) {
                waterMarkColor.setColor(color);
            }

            // 以下、PDF透かし以外と共通するデフォルトの設定
            // 透かしの名前の設定
            waterMarkColor.setName("waterMarkColor");
            // 透かしの配置の設定
            waterMarkColor.setAlign(PtlParamWaterMark.ALIGN.ALIGN_CENTER);
            // 透かしのZオーダーの設定 ZORDER_FRONT = 1 
            waterMarkColor.setZorder(PtlParamWaterMark.ZORDER.ZORDER_FRONT);
            // 透かしの不透明度の設定
            waterMarkColor.setOpacity(0.5f);
            // デフォルトの設定終わり

            // 透かしを文書に設定する
            doc.appendWaterMark(waterMarkColor);
        }
    }
}

プログラムファイル名

ColorWaterMarkAppend.java

入出力操作の例

images/ColorWaterMarkAppend.png

images/ColorWaterMarkAppend-example.png

図2・19 カラー透かし設定