4.1.4 ページの大きさを任意のサイズに指定する

images/ImageToPdfSetPaperSize-top.png

狙い・効果

画像から作るページの縦横サイズを設定画像からページを作る際の新規ページの大きさを任意のサイズに指定します。

処理の概要

画像から新規ページを作成する際に、ページのサイズを「カスタムサイズ」として選択して、ページ幅・ページの高さをユーザが指定できます。

本サンプルプログラムでは、入力画像ファイルを新しいPDFドキュメントとして出力します。その際に新規ページの幅、高さをそれぞれコマンドライン引数で指定します。単位はmm単位です。画像が大きいときはページの中に入るように縮小します。それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfSetPaperSize {

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

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

        //コマンドライン引数の読み取り
        float paperWidth = Float.parseFloat(args[2]); 
        float paperHeight = Float.parseFloat(args[3]); 

        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()) {

                // 画像ページのサイズをPAPER_CUSTOM_SIZEに指定してカスタムサイズにする
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_CUSTOM_SIZE);

                // 画像ページのサイズを指定
                try(PtlSize sizeOfPaper = new PtlSize(paperWidth, paperHeight)){
                    paramImagePage.setCustomPageSize(sizeOfPaper);
                }

                // 画像描画パラメータに画像ファイルを設定
                paramDrawImage.setImageStream(inputImage);
                // 画像ページパラメータに画像描画パラメータを設定
                paramImagePage.setImage(paramDrawImage);
                // 画像の配置を設定
                paramImagePage.setAlign(PtlParamImagePage.ALIGN.ALIGN_CENTER);
                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }
            // ファイルに保存します。
            doc.save(outputFile);
        }
	...【AppendAnnotStampDefault.javaと同じ処理のため省略
	  ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ImageToPdfSetPaperSize.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfSetPaperSize 
usage: java ImageToPdfSetPaperSize image-file out-pdf-file paper-width paper-height

C:\samples>java cookbook.ImageToPdfSetPaperSize fileformat.png imagetopdf-A4-landscape.pdf 297 210  
-- 完了 --

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

ページの大きさを任意サイズから指定する