
透かしを画面に表示するかどうか指定できます。
透かしを画面に表示するか、しないかを設定します。透かしを画面に表示されないように設定すれば、その透かしは画面では見えませんが、印刷すると現われます。例えば、PDF文書を印刷した書面を無効にできます。
package cookbook;
import jp.co.antenna.ptl.*;
public class WaterMarkSetDisplay {
// そのクラスのusageを表示する関数
public static void printUsage() {
System.out.println("usage: java WaterMarkSetDisplay in-pdf-file out-pdf-file display-watermark");
System.out.println("display-watermark : \n 0 : PDF表示時に透かしを表示しない。1 : 表示する。");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 3) {
printUsage(); // usageメッセージの表示
return;
}
// コマンドライン引数の読み取り・判定
boolean setDisplay;
try {
setDisplay = readBoolArgs(args[2], "display-watermarkは0か1で指定してください。");
}
catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
printUsage(); // usageメッセージの表示
return;
}
...【WaterMarkSetMargin.javaと同じ処理のため省略
・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
・PtlParamOutputを用いて出力PDF名を指定】...
// 透かしの追加
appendWaterMarkSetDisplay(doc, setDisplay);
...【EncryptWithUserPass.javaと同じ処理のため省略
・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
・PtlException, Exception, Error を catchするエラー処理
・finally文で"--完了--"と表示する処理】...
}
public static void appendWaterMarkSetDisplay(PtlPDFDocument doc, boolean setDisplay)
throws PtlException, Exception, Error {
try (PtlParamWaterMarkText waterMarkText = new PtlParamWaterMarkText()) {
// PDF表示時に透かしを表示するかどうかを指定します。
waterMarkText.setDisplayWaterMark(setDisplay);
...【WaterMarkSetRect.javaのappendWaterMarkSetRect()と同じ処理のため省略。
配置位置はWaterMarkSetPageRange.javaのappendWaterMarkSetPageRange()のものを共通とする。
・テスト用テキスト透かしに共通の設定をセットする。
・設定項目:配置位置・名前・Zオーダー・ページ範囲・不透明度・文字列・
タイリング・フォント・文字の色・縁取りの色・対角線配置の有無・配置角度
・PtlPDFDocument docにテキスト透かしを設定する】...
}
}
...【readBoolArgs()の処理はWaterMarkSetPageRange.javaと共通のため省略。
・0 または1 を入力されたargs により、true またはfalse を返すメソッド。
・argsが0か1でなかった場合に出力されるエラーメッセージを指定する。】...
}
WaterMarkSetDisplay.java

透かしを表示しない設定にした場合、PDF文書をリーダーで表示した状態では透かしが表示されません。しかし、同じPDF文書をプリンタに出力すると透かしが表示されます。