5.1.1 画像を任意の角度で描画する

AddImageSetAngle_Top

狙い・効果

角度指定画像を任意の角度に傾けて描画 挿入する画像画像を任意の角度に傾けて描画します。

処理の概要

画像をPDFに挿入する際、小数を含む任意の角度に傾けることができます。

PtlParamDrawImage. setAngle()を呼び出して指定します。角度は度数法で表し、反時計回りに指定した角度の分だけ画像が傾きます。(setRotate()では、回転角度を90度刻みで指定します)

サンプルプログラムでは、入力PDFに画像を挿入する際に角度を指定します。画像の挿入方法とそのサンプルプログラムについては「『PDF CookBook』(第1巻)2.2.1 ページ上に画像を描画」を参照してください。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;


public class AddImageSetAngle {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
            System.out.println("usage: java AddImageSetAngle in-pdf-file out-pdf-file insert-image-file"
                             + " angle");
            System.out.println("angle : 画像の角度");
    }

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

        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {
            // PDFファイルをロードします
            doc.load(inputFile);

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

            try (PtlPages pages = doc.getPages()) { // ページコンテナの取得
                // ページコンテナが空かどうか
                if (pages.isEmpty()) {
                    System.out.println("ページコンテナが空");
                    return;
                }

                try (PtlPage page = pages.get(0);// 先頭ページの取得(パラメータindexは0が先頭)
                     PtlContent content = page.getContent();// ページコンテントの取得
                     PtlRect outputRect = page.getViewBox(); // 出力矩形の設定。(ページの大きさを得るためにViewBoxを取得する)
                     PtlParamDrawImage paramDrawImage = new PtlParamDrawImage(); //画像の描画に使うパラメータクラス
                     PtlParamInput insertImage = new PtlParamInput(args[2]); //画像指定に使うパラメータクラス
                     PtlParamWriteString plainParam = new PtlParamWriteString()) {// 文字描画のパラメータクラス。
                    //入力画像の角度を設定
                    paramDrawImage.setAngle(angle);

                    //入力画像ストリームの設定
                    paramDrawImage.setImageStream(insertImage);
                    //マルチTiffのページ番号の設定(マルチTiffファイルにのみ有効) 
                    //数値を設定しない場合は、-1が設定されたとみなします
                    //PtlParamImagePageに設定する場合に限り、-1を設定すると全ページを挿入します。
                    paramDrawImage.setImagePageNumber(0);

                    // 透明度を設定
                    paramDrawImage.setOpacity(1);
                    // 画像出力
                    content.drawImage(outputRect, PtlContent.ALIGN.ALIGN_CENTER, paramDrawImage);
                    // angleの状態テキストを描画
                    content.writeString(outputRect, PtlContent.ALIGN.ALIGN_CENTER, "angle = " + angle, plainParam);
                }
                catch (IllegalArgumentException ex) {//PtlContent.ALIGNの指定が誤っていた場合のエラーメッセージ
                    System.out.println(ex.getMessage());
                    System.out.println("ERROR : alignにはPtlContent.ALIGNに含まれる名前を指定してください。");
                    ex.printStackTrace();
                }
            }

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

プログラムファイル名

AddImageSetAngle.java

入出力操作の例

C:\samples>java cookbook.AddImageSetAngle 
usage: java AddImageSetAngle in-pdf-file out-pdf-file insert-image-file angle
angle : 画像の角度

C:\samples>java cookbook.AddImageSetAngle novelText.pdf Output_AddImageSetAngle45.pdf  ahlogo.png 45 
-- 完了 --

この操作例では画像を挿入する際に45度を指定しています。

5-5-1-1_AddImageSetAngle_45

図5.1 画像の挿入時に45度を指定した例