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