2.4.1 色透かしの挿入

images/ColorWaterMarkAppend-top.png

狙い・効果

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

処理の概要

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

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

PDF Tool APIの主な機能

プログラム例

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");
        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 カラー透かし設定