2.1.8 透かし表示条件:印刷

images/WaterMarkSetPrint-top.png

狙い・効果

透かしを印刷するかどうか指定できます。

処理の概要

PDFを印刷する時に、透かしを印刷するかどうかを指定ができます。画面への表示は通常の透かしのように見えますが、PDF文書を印刷すると現れない透かしを作成できます。

『PDF Tool API』の主な機能

プログラム例

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

入出力操作の例

images/WaterMarkSetPrint.png

透かしを印刷しない設定にしたときは、PDF文書を画面に表示するときは透かしが表示されます。しかし、PDF文書をプリンタに出力するときに透かしは見えません。