1.2.4 ページ周囲に余白を追加

images/AddMargin-top.png

狙い・効果

PDF文書のページ周囲にページの余白を追加余白として断ち落とし領域と印刷用紙のサイズを追加します。

処理の概要

PDF文書で印刷サイズ(例えばA4)のとき、それを仕上がりサイズ(TrimBox)とし、周囲に指定した幅の断ち落とし領域(BleedBox)を設定します。さらに、指定した幅分外側に印刷用紙のサイズ(MediaBox)を設定します。表示領域(CropBox)をMediaBoxと同じ値にします。

『PDF Tool API』の主な機能

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

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class AddMargin {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 3)
        {
            System.out.println("usage: java AddMargin in-pdf-file out-pdf-file size-of-margin");
            return;
        }


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

            int numPages = doc.getPageCount();
            System.out.println("全"+ numPages + "ページに余白を追加します。");


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

                for(int i = 0; i < numPages; i++)
                {
                    // ページの取得
                    // PtlPages.get() のパラメータindexは0が先頭
                    try (PtlPage page = pages.get(i);
                         PtlSize sizeOfPage = page.getSize())//サイズを取得
                    {
                        float trimBoxWidth = sizeOfPage.getWidth();
                        float trimBoxHeight = sizeOfPage.getHeight();
                        float sizeOfMargin = Float.parseFloat(args[2]);

                        float top, bottom, left,right;

                        //TrimBox
                        left = 0;
                        bottom = 0;
                        right = trimBoxWidth;
                        top = trimBoxHeight;
                        try(PtlRect trimBox = new PtlRect(left, bottom, right, top))
                        {
                            //TrimBoxの設定
                            page.setTrimBox(trimBox);
                        }


                        //BleedBox
                        left = left - 3;
                        bottom = bottom - 3;
                        right = right + 3;
                        top = top + 3;
                        try(PtlRect bleedBox = new PtlRect(left, bottom, right, top))
                        {
                            //BleedBoxの値の設定
                            page.setBleedBox(bleedBox);
                        }

                        //MediaBox,CropBox
                        left = left - sizeOfMargin;
                        bottom = bottom - sizeOfMargin;
                        right = right + sizeOfMargin;
                        top = top + sizeOfMargin;
                        try(PtlRect mediaBox = new PtlRect(left, bottom, right, top))
                        {
                            //MediaBoxの設定
                            page.setMediaBox(mediaBox);
                            //CropBoxの設定->MediaBoxと同じものを指定。
                            page.setCropBox(mediaBox);
                        }
                    }
                }


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

    }
}

サンプルファイル名

AddMargin.java

入出力操作の例

C:\samples>java cookbook.AddMargin 
usage: java AddMargin in-pdf-file out-pdf-file size-of-margin

C:\samples>java cookbook.AddMargin test-edited.pdf test-edited-addmargin.pdf 3 
全1ページに余白を追加します。
-- 完了 --

入力したPDF(左)と出力したPDF(右)を比較すると、周囲に余白が追加されていることが分かります。

この使用例では余白の幅を3mmで指定しています。

images/AddMargin-before-after-pdf.png

図1・4 周囲に余白を追加