4.2.4 ステンシルマスクで描画した画像のPDF化

images/ImageToPdfStencilMask-top.png

狙い・効果

モノクロ画像ファイルをステンシルマスクとして描画した上でPDF化します。

処理の概要

ステンシルマスクでモノクロ画像の白の部分が透明、黒の部分を指定した色で塗りつぶす描画ができます。ステンシルマスクの画像として使えるのはモノクロのBMP形式画像です。塗りつぶす色はRGBの各要素の値で指定します。

本サンプルプログラムでは、入力画像ファイルを元にステンシルマスクとして描画したものを新しいPDFドキュメントとして出力します。ステンシルマスクのRGBは0.0~1.0の範囲で指定します。それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfStencilMask {
    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java ImageToPdfStencilMask mask-file" +
                           " out-pdf-file mask-colorR mask-colorG mask-colorB");
     }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 5) {
            printUsage();
            return;
        }

        //コマンドライン引数の取得
        float maskColorR = Float.parseFloat(args[2]);
        float maskColorG = Float.parseFloat(args[3]);
        float maskColorB = Float.parseFloat(args[4]);

        try (PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument();
             PtlPages pages = doc.getPages()) {  // ページコンテナの取得
            // 画像描画パラメータ
            // 画像ファイル
            // 画像ページパラメータ
            try (PtlParamDrawImage paramDrawImage = new PtlParamDrawImage();
                 PtlParamInput inputMask = new PtlParamInput(args[0]);
                 PtlParamImagePage paramImagePage = new PtlParamImagePage()) {
                // マスク用画像描画パラメータに画像ファイルを設定
                paramDrawImage.setImageStream(inputMask);

                // 指定した色のステンシルマスクを設定する
                try (PtlColorDeviceRGB colorRGB =
                     new PtlColorDeviceRGB(maskColorR, maskColorG, maskColorB)) {
                    paramDrawImage.setMaskColor(colorRGB,
                                                PtlParamDrawImage.MASK_TYPE.MASK_STENCIL);
                }

                // 画像ページパラメータに画像描画パラメータを設定
                paramImagePage.setImage(paramDrawImage);
                // 画像ページのサイズを画像サイズにあわせる
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_IMAGE_SIZE);

                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }

            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【AppendAnnotStampDefault.javaと同じ処理のため省略
	  ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ImageToPdfStencilMask.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfStencilMask 
usage: java ImageToPdfStencilMask mask-file out-pdf-file mask-colorR mask-colorG mask-colorB

C:\samples>java cookbook.ImageToPdfStencilMask ahlogo_mono.bmp imagestencilmask-070707.pdf 0.7 0.7 0.7 
-- 完了 --

左の上は元の画像(ahlogo_mono.bmp)で、右はステンシルマスク処理をして作成したPDFです。

ステンシルマスクで描画した画像のPDF化