4.2.2 明示マスクを施した画像のPDF化

images/ImageToPdfExplicitMask-top.png

狙い・効果

画像ファイルに明示マスクを施した上でPDF化します。

処理の概要

明示マスクを利用して地となる画像の一部分を切り取るマスク処理ができます。明示マスク用の画像として使えるのはモノクロのBMP形式画像で、大きさ(画像の縦横のピクセル数)が地の画像と揃っている必要があります。

本サンプルプログラムでは、入力画像ファイルに明示マスク処理を施したものを新しいPDFドキュメントとして出力します。元画像ファイルに加えて明示マスクに利用する画像ファイルをコマンドライン引数で指定します。

それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfExplicitMask {

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


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

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

                // 画像ページパラメータに画像描画パラメータを設定
                paramImagePage.setImage(paramDrawImage);

                // 画像ページのサイズを画像サイズにあわせる
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_IMAGE_SIZE);
                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }

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

プログラムファイル名

ImageToPdfExplicitMask.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfExplicitMask 
usage: java ImageToPdfExplicitMask image-file mask-file out-pdf-file

C:\samples>java cookbook.ImageToPdfExplicitMask gradation.jpg ahlogo_mono.bmp imageexplicit.pdf 
-- 完了 --

左の上は地の画像(gradation.jpg)、下がマスク画像(ahlogo_mono.bmp)で、右は明示マスク処理をして作成したPDFです。

明示マスクを施した画像のPDF化