透かしの文字列を塗りつぶす色を指定します。
文字列の色指定は、色空間を指定した上で、色要素を指定、という2段階になります(詳細は「『PDF CookBook』(第1巻)2.1.3 文字の色指定」を参照してください)。
本プログラム例では、色空間としてRGBカラーを使います。コマンドラインで、赤(R)、緑(G)、青(B)の3要素の強さをそれぞれ0.0~1.0の範囲で指定します。
package cookbook; import jp.co.antenna.ptl.*; public class TextWaterMarkSetColor { // そのクラスのusageを表示する関数 public static void printUsage() { System.out.print("usage: java TextWaterMarkSetColor in-pdf-file out-pdf-file"); System.out.println(" color-R color-G color-B"); 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 < 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名を指定】... // 透かしの追加 appendTextWaterMarkSetColor(doc, colorR, colorG, colorB); ...【EncryptWithUserPass.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static void appendTextWaterMarkSetColor(PtlPDFDocument doc, float colorR, float colorG, float colorB) throws PtlException, Exception, Error { try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) { // 透かしの文字に指定する色の設定 // PtlColorDeviceRGBは、PtlColorNone, PtlColorDeviceGray, PtlColorDeviceCMYKに // 置き換えて指定することも可能。その場合は指定する変数の種類に注意。 try (PtlColorDeviceRGB colorText = new PtlColorDeviceRGB(colorR, colorG, colorB)) { waterMarkText.setTextColor(colorText); } ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。 配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。 ・文字の色以外の、テスト用テキスト透かしに共通の設定をセットする。 ・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・ タイリング・フォント・縁取りの色・対角線配置の有無・配置角度 ・PtlPDFDocument docにテキスト透かしを設定する】... } } }
TextWaterMarkSetColor.java
次図は透かしの文字列に2種類のカラーを設定した例です。