1.2.6 ページの拡大・縮小

images/ZoomPage-top.png

狙い・効果

PDF文書の用紙サイズを拡大・縮小用紙サイズを拡大、縮小します。

処理の概要

PDF文書の全ページの用紙サイズを指定した用紙サイズに拡大または縮小します。これは、PDFの境界設定値の値を変更して、描画される文字の大きさなどをそれに比例して変更することに相当します。例えば、元のPDFの用紙サイズがA4のとき、50%縮小後の用紙サイズはA5となります。文字サイズも比例して小さくなります。

なお、用紙サイズの変更は、印刷するときの用紙の寸法の変更であり、PDFのファイルサイズを増減する処理ではありません。

『PDF Tool API』の主な機能

この例では次の機能を使っています。

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ZoomPage {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 4)
        {
            System.out.println("usage: java ZoomPage in-pdf-file out-pdf-file page-to-zoom zooming-ratio");
            System.out.println("zooming-ratio : 1.0が等倍です。0.1から10.0までの値を指定してください。");
            return;
        }

        //zooming-ratioの数値判定
        float zoomingRatio = Float.parseFloat(args[3]);
        if((zoomingRatio < 0.1) || (10.0 < zoomingRatio))
        {
            System.err.println("zooming-ratioは0.1から10.0までの値を指定してください。");
            return ;
        }

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

        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
             ・PtlParamOutputを用いて出力PDF名を指定】...


        ...【RemovePages.javaと同じ処理のため省略
             ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得
             ・ページコンテナが空だった場合にエラーを出力して終了】...


                int numPages = doc.getPageCount();
                System.out.println("ページ数:" + numPages);
                int pageToZoom = Integer.parseInt(args[2]);
                //PageToZoomの値を判定する。
                if((pageToZoom < 1) ||(numPages < pageToZoom))
                {
                    System.err.println("page-to-zoomは、PDFのページ数の範囲で指定してください。");
                    return;
                }
                // ページの取得
                // PtlPages.get() のパラメータindexは0が先頭のため、pageToZoomから1引いています。
                try (PtlPage page = pages.get(pageToZoom - 1)) 
                {
                    page.zoom(zoomingRatio);
                }
            }


        ...【AppendPages.javaと同じ処理のため省略
             ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...

    }
}

サンプルファイル名

ZoomPage.java

入出力操作の例

C:\samples>java cookbook.ZoomPage 
usage: java ZoomPage in-pdf-file out-pdf-file page-to-zoom zooming-ratio
zooming-ratio : 1.0が等倍です。0.1から10.0までの値を指定してください。

C:\samples>java cookbook.ZoomPage test-edited.pdf test-edited-05.pdf 1 0.5 
ページ数:1
-- 完了 --

この例では入力PDFのページサイズを0.5倍(50%)に縮小しています。以下は同じ倍率で見た場合のページサイズを比較したものです。

images/ZoomPage-compare.png

図1・6 比較:用紙サイズの拡大