4.1.3 ページの大きさを既存サイズから選択する

images/ImageToPdfSetPaperType-top.png

狙い・効果

画像から作るページサイズを設定画像からページを作る際の大きさを既存のページサイズから設定します。

処理の概要

画像を元に新規ページを作る際に、デフォルトの画像サイズに合わせてページを作成する動作の他に、A4やB5といった既存のページサイズを指定できます。

本サンプルプログラムでは、入力画像ファイルを新しいPDFドキュメントとして出力します。その際にページのサイズを選択します。指定には列挙型定数PtlParamImagePage.PAPER_TYPEの各定数名を文字列で指定します。このとき、カスタムサイズは指定できませんのでPAPER_CUSTOM_SIZEは指定しないでください。それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

表4・2 指定可能な用紙タイプ
PAPER_A3 A3
PAPER_A3_R A3 (横長)
PAPER_A4 A4
PAPER_A4_R A4(横長)
PAPER_B4 B4
PAPER_B4_R B4(横長)
PAPER_B5 B5
PAPER_B5_R B5(横長)
PAPER_CUSTOM_SIZE カスタムサイズ(「4.1.4 ページの大きさを任意のサイズに指定する」で解説)
PAPER_EXECUTIVE Executive(184.6mm × 266.7mm)
PAPER_EXECUTIVE_R Executive(横長)
PAPER_IMAGE_SIZE 画像サイズに合わせる(デフォルト値)
PAPER_LEGAL Legal(215.9mm × 355.6mm)
PAPER_LEGAL_R Legal (横長)
PAPER_LETTER Letter(215.9mm × 355.6mm)
PAPER_LETTER_R Letter (横長)
PAPER_TABLOID Tabloid(279.4mm × 431.8mm)
PAPER_TABLOID_R Tabloid (横長)

Executive, Legal, Letter, Tabloidはそれぞれ、北米で慣例的に使用される用紙サイズの名称を表します。

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfSetPaperType {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java ImageToPdfSetPaperType image-file" +
                           " out-pdf-file paper-type");
        System.out.println("paper-type : 用紙タイプ");
     }

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

        //コマンドライン引数の読み取り
        String paperType = args[2];
        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);

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

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

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

                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }
            //PtlParamImagePage.PAPER_TYPEの指定が誤っていた場合のエラーメッセージ
            catch (IllegalArgumentException iaex){
                System.out.println(iaex.getMessage());
                System.out.println("ERROR : paper-typeにはPtlParamImagePage.PAPER_TYPEに" +
                                   "含まれる名前を指定してください。");
                iaex.printStackTrace();
            }
            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【AppendAnnotStampDefault.javaと同じ処理のため省略
	  ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ImageToPdfSetPaperType.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfSetPaperType 
usage: java ImageToPdfSetPaperType image-file out-pdf-file paper-type
paper-type : 用紙タイプ

C:\samples>java cookbook.ImageToPdfSetPaperType fileformat.png imagetopdf-A4.pdf PAPER_A4 
-- 完了 --

左が元の画像(fileformat.png)、右は元の画像をA4の用紙に配置したPDFを表示したところです。

ページの大きさを選択