4.1.6 余白の指定

images/ImageToPdfSetMargin-top.png

狙い・効果

画像からPDFページ作成時の余白画像からPDFページ作成をする際に余白を指定します。

処理の概要

PDFページ作成の際に画像の周囲に余白を設けることができます。用紙サイズが決まったページに画像を配置するとき、画像は通常、配置矩形いっぱいに描画されますが余白を確保するよう設定することができます。

本サンプルプログラムでは入力画像ファイルを新しいPDFドキュメントとして出力します。ページサイズはA4縦(ポートレート)用紙で、画像の上側、左側、下側、右側にそれぞれ設けるマージンの大きさをmm単位で指定します。それ以外の設定・動作は「4.1.1 ページの作成」と同じです。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ImageToPdfSetMargin {

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

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

        // コマンドライン引数の取得 
        float marginTop    = Float.parseFloat(args[2]);
        float marginLeft   = Float.parseFloat(args[3]);
        float marginBottom = Float.parseFloat(args[4]);
        float marginRight  = Float.parseFloat(args[5]);
        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()) {
                // 画像の余白を設定
                paramImagePage.setMargin(marginTop, marginLeft, marginBottom, marginRight);

                // 画像描画パラメータに画像ファイルを設定
                paramDrawImage.setImageStream(inputImage);
                // 画像ページパラメータに画像描画パラメータを設定
                paramImagePage.setImage(paramDrawImage);
                // 画像ページのサイズを画像サイズにあわせる
                paramImagePage.setPaperType(PtlParamImagePage.PAPER_TYPE.PAPER_A4);
                // 画像の配置を設定
                paramImagePage.setAlign(PtlParamImagePage.ALIGN.ALIGN_CENTER);
                // ページコンテナに画像ページパラメータを追加
                pages.append(paramImagePage);
            }

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

プログラムファイル名

ImageToPdfSetMargin.java

入出力操作の例

C:\samples>java cookbook.ImageToPdfSetMargin 
usage: java ImageToPdfSetMargin image-file out-pdf-file marginTop marginLeft marginBottom marginRight

C:\samples>java cookbook.ImageToPdfSetMargin fileformat.png imagetopdf-margin.pdf 100 30 100 30 
-- 完了 --

A4用紙の上下に各100mm、左右に各30mmの余白を確保して、その中に画像を配置しています。

余白の指定