2.2.8 透かしの輪郭線

images/TextWaterMarkSetOutlineColor-top.png

狙い・効果

透かし文字列の輪郭線の色を指定します。

処理の概要

文字の輪郭線の色を設定します。色の指定方法は2.2.7 透かしの文字色と同じです。

注意:

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

『PDF Tool API』の主な機能

プログラム例

package cookbook;

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

public class TextWaterMarkSetOutlineColor {
    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.print("usage: java TextWaterMarkSetOutlineColor in-pdf-file out-pdf-file");
        System.out.println(" outline-color-R outline-color-G outline-color-B");
        System.out.println("outline-color-R, outline-color-G, outline-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 < 5) {
            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名を指定】...

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

    public static void appendTextWaterMarkSetOutlineColor(PtlPDFDocument doc, float colorR,
                                                   float colorG, float colorB)
        throws PtlException, Exception, Error {
        try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
            // 透かしの文字の縁取りに指定する色の設定
            // PtlColorDeviceRGBは、PtlColorNone, PtlColorDeviceGray, PtlColorDeviceCMYKに
            // 置き換えて指定することも可能。その場合は指定する変数の種類に注意。
            try (PtlColorDeviceRGB colorOutline = new PtlColorDeviceRGB(colorR, colorG, colorB)) {
                waterMarkText.setOutlineColor(colorOutline);
            }
        ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
           配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
             ・縁取りの色以外の、テスト用テキスト透かしに共通の設定をセットする。
             ・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・
              タイリング・フォント・文字の色・対角線配置の有無・配置角度
             ・PtlPDFDocument docにテキスト透かしを設定する】...
        }
    }
}

プログラムファイル名

TextWaterMarkSetOutlineColor.java

入出力操作の例

images/TextWaterMarkSetOutlineColor.png

次図は文字列の輪郭線にカラーをRGBで(0.2 0.2 0.2)と指定した例です。

images/TextWaterMarkSetOutlineColor-example.png

図2・14 テキスト透かしの輪郭線の色設定