2.3.4 倍率の設定

images/ImageWaterMarkSetScale-top.png

狙い・効果

透かしの倍率を指定します。

処理の概要

透かしに画像とPDF文書を使うとき、透かしの大きさを画像及びPDF文書の倍率で指定します。画像の大きさは元の画像のピクセル数とdpiにより計算されます(詳細は『PDF CookBook』第1巻2.2画像描画を参照してください)。透かしの倍率0を指定するとsetRect()、setMargin()で指定された透かしの配置矩形にフィットするよう拡大します。設定しない場合はデフォルト値として0が使用されます。また、大きい倍率を設定した場合も透かしの配置矩形をはみ出す以上に拡大することはできません。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageWaterMarkSetScale {
    // そのクラスのusageを表示する関数
    public static void printUsage(){
        System.out.print("usage: java ImageWaterMarkSetScale in-pdf-file out-pdf-file");
        System.out.println(" watermark-image image-scale");
        System.out.println("image-scale : ");
        System.out.println("透かしの倍率(0.0f〜50.0f [100%=1.00f])");
        System.out.println("ただし、0.0fを指定した場合、画像を透かしの配置矩形に合わせる。");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3)
        {
            printUsage(); // usageメッセージの表示
            return;
        }

        // コマンドライン引数の読み取り
        String pathImage = args[2];
        float scale = Float.parseFloat(args[3]);
        if((scale < 0.0f) ||(50.0f < scale))
        {
            System.out.println("image-scaleは0.0f~50.0fの範囲で指定してください。");
            printUsage(); // usageメッセージの表示
            return;
        }
        ...【WaterMarkSetMargin.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...

            // 透かしの追加
            appendImageWaterMarkSetScale(doc, pathImage, scale);
        ...【EncryptWithUserPass.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...
    }

    public static void appendImageWaterMarkSetScale(PtlPDFDocument doc, String pathImage,
                                                    float scale)
        throws PtlException, Exception, Error
    {
        try (PtlParamWaterMarkImage waterMarkImage = new PtlParamWaterMarkImage())
        {
            // 透かしに指定する画像の設定
            try (PtlParamInput inputImage = new PtlParamInput(pathImage))      // 画像ファイル
            {
                // 画像描画パラメータに画像ファイルを設定
                waterMarkImage.setImageStream(inputImage);
            }
            // 透かしの倍率の設定
            waterMarkImage.setScale(scale);


            // 以下、画像透かし以外と共通するデフォルトの設定
            // 透かしの名前の設定
            waterMarkImage.setName("waterMarkImage");
        ...【ImageWaterMarkAppend.javaのappendImageWaterMark()と同じ処理のため省略。
             ・名前以外の、テスト用透かしに共通の設定をセットする。
             ・設定項目:余白・配置位置・Zオーダー・不透明度・タイリング
             ・PtlPDFDocument docに透かしを設定する】...
        }
    }
}

プログラムファイル名

ImageWaterMarkSetScale.java

入出力操作の例

images/ImageWaterMarkSetScale.png

画像透かしの大きさ(倍率)を指定します。最初が「1」で画像の原寸です。次が「0」で画像を配置領域一杯に拡大します。

images/ImageWaterMarkSetScale-example.png

図2・18 画像透かしの大きさ設定