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

images/AddMargin-top.png

狙い・効果

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

処理の概要

PDF文書で印刷サイズ(例えばA4)のとき、それを仕上がりサイズ(TrimBox)とし、周囲に幅3mmの断ち落とし領域(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

入出力操作の例

images/AddMargin.png

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

images/AddMargin-before-after-pdf.png

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