透かしの不透明度を指定します。
透かしの不透明度の値を0.0(透明)~1.0(不透明)の範囲で設定します。例えば、透明なテキスト透かしも作成できます。透かしを透明にすることでユーザーの目に見えない情報を埋め込み目に見えない情報を埋め込めます。透明なテキスト透かしはPDFリーダーでは表示されなくても、検索でそのテキストは検索でヒットします。
package cookbook; import jp.co.antenna.ptl.*; public class WaterMarkSetOpacity { // そのクラスのusageを表示する関数 public static void printUsage(){ System.out.println("usage: java WaterMarkSetOpacity in-pdf-file out-pdf-file opacity"); System.out.println("opacity : 0.0(透明)~1.0(不透明)の数値で指定"); } /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { printUsage(); // usageメッセージの表示 return; } float opacity = Float.parseFloat(args[2]); //コマンドライン引数の判定 if(opacity < 0.0f || 1.0f < opacity) { System.out.println("opacityは0.0~1.0の数値で指定してください。"); printUsage(); // usageメッセージの表示 return; } ...【WaterMarkSetMargin.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... // 透かしの追加 appendWaterMarkSetOpacity(doc, opacity); ...【EncryptWithUserPass.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } public static void appendWaterMarkSetOpacity(PtlPDFDocument doc, float opacity) throws PtlException, Exception, Error { try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) { // 透かしの不透明度の設定 waterMarkText.setOpacity(opacity); ...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。 配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。 ・不透明度以外の、テスト用テキスト透かしに共通の設定をセットする。 ・設定項目:配置位置・名前・Zオーダー・ページ範囲・文字列・ タイリング・フォント・文字の色・縁取りの色・対角線配置の有無・配置角度 ・PtlPDFDocument docにテキスト透かしを設定する】... } } }
WaterMarkSetOpacity.java
次図は上が透かしの透明度を0.2、下が同透明度0.7に設定した結果です。