4.1.2 画像パラメータの指定

images/ImageToPdfSetParam-top.png

狙い・効果

画像のパラメータを変更してPDFに変換変換する画像の各種パラメータを変更した上で画像をPDFに変換します。

処理の概要

画像をPDFに変換する際には、PDFに画像を描画するときと同様のパラメータを設定できます。PDFに画像を描画する処理についての詳細は「『PDF CookBook』(第1巻)2.2 画像描画」を参照してください。

設定できる項目は以下の表の通りです。

表4・1 画像変換の際に画像に対して設定可能な項目
dpi 画像のdpi。変換される画像の大きさは画像のピクセル数とdpiで決まります。デフォルトでは画像の元々持っているdpiの値が優先されるので追加の設定が必要です。
不透明度 画像の不透明度。不透明度を0.0に設定すると、指定したサイズで空白のページが挿入されることになります。
回転角 画像を回転させる角度。90度単位で設定できます(画像の回転はPDF Tool API V6.0から利用可能な機能です。)

本サンプルプログラムでは、入力画像ファイルを新しいPDFドキュメントとして出力します。その際に、画像のdpi、不透明度、回転角を指定します。それ以外の設定は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfSetParam {
    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java ImageToPdfSetParam image-file" +
                           " out-pdf-file num-DPI opacity rotate-angle");
        System.out.println("rotate-angle :反時計回りの回転角度");
        System.out.println("[0, 90, 180, 270]のいずれかを指定してください。");
     }

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

        int numDPI = Integer.parseInt(args[2]);
        float opacity = Float.parseFloat(args[3]);
        int rotateAngle = Integer.parseInt(args[4]);
        switch(rotateAngle){
        case 0:
        case 90:
        case 180:
        case 270:
            break;

        default:
            System.out.println("rotate-angleには[0, 90, 180, 270]のいずれかを" +
                               "指定してください");
            printUsage();
            return;
        }

        try (PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument();  //PDF文書を表現したクラスを新規作成
             PtlPages pages = doc.getPages()) {  //作成したクラスのページコンテナの取得

            // 画像描画パラメータ
            // 画像ファイル
            // 画像ページパラメータ の取得
            try (PtlParamDrawImage paramDrawImage = new PtlParamDrawImage();
                 PtlParamInput inputImage = new PtlParamInput(args[0]);
                 PtlParamImagePage paramImagePage = new PtlParamImagePage()) {
                // 画像描画パラメータに画像ファイルを設定
                paramDrawImage.setImageStream(inputImage);

                // 画像ページパラメータに画像描画パラメータを設定


                // DPI入力設定。
                paramDrawImage.setUseOriginalDPI(false);
                paramDrawImage.setDPI(numDPI);
                // 透明度を設定
                paramDrawImage.setOpacity(opacity);
                // 回転角度を設定
                paramDrawImage.setRotate(rotateAngle);

                paramImagePage.setImage(paramDrawImage);

                // 画像ページのサイズを画像サイズにあわせる
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_IMAGE_SIZE);

                // 画像の配置を設定
                paramImagePage.setAlign(PtlParamImagePage.ALIGN.ALIGN_CENTER);

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

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

プログラムファイル名

ImageToPdfSetParam.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfSetParam 
usage: java ImageToPdfSetParam image-file out-pdf-file num-DPI opacity rotate-angle
rotate-angle :反時計回りの回転角度
[0, 90, 180, 270]のいずれかを指定してください。

C:\samples>java cookbook.ImageToPdfSetParam fileformat.png imagetopdf-param.pdf 200 0.5 90 
-- 完了 --

左が元の画像(fileformat.png)、右は元の画像を90度回転して作成したPDFを表示したところです。

画像パラメータの指定