1.2.1 ページ境界値の取得

images/GetBoundary-top.png

狙い・効果

PDF文書のページ境界の設定値を取得します。

処理の概要

入力されたPDF文書の各ページに設定されている境界値を取得して画面に表示します。

取得するのはPDF仕様が持つ境界値です。

PDFのページ境界はページ毎の設定です。ページ数が多い時は先頭の10ページ分だけ表示します。

『PDF Tool API』の主な機能

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

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class GetBoundary {

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



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


            // ページ数の取得
            int numPages = doc.getPageCount();
            System.out.println("ページ数:" + numPages);
            if(numPages > 10)
            {
                System.out.println("ページ数が10ページを超えています。");
                System.out.println("ページ境界の値を表示するのは先頭10ページまでとなります。");
                numPages = 10;
            }



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


                for (int i = 0; i < numPages; i++)
                {
                    // 読み込んだページの取得
                    try (PtlPage page = pages.get(i);
                         PtlRect mediaBox = page.getMediaBox()) // 読み込んだページのMediaBox取得
                    {
                        System.out.println("ページ:" + (i+1));
                        float top = mediaBox.getTop();
                        float bottom = mediaBox.getBottom();
                        float left = mediaBox.getLeft();
                        float right = mediaBox.getRight();
                        System.out.println("MediaBox の[top, bottom, left, right]は、");
                        System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); 

                        if(page.hasCropBox())
                        {
                            try(PtlRect cropBox = page.getCropBox())
                            {
                                top = cropBox.getTop();
                                bottom = cropBox.getBottom();
                                left = cropBox.getLeft();
                                right = cropBox.getRight();
                                System.out.println("CropBox の[top, bottom, left, right]は、");
                                System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); 
                            }
                        }
                        else
                        {
                            System.out.println("このページにはCropBoxはありません。");
                        }

                        if(page.hasBleedBox())
                        {
                            try(PtlRect bleedBox = page.getBleedBox())
                            {
                                top = bleedBox.getTop();
                                bottom = bleedBox.getBottom();
                                left = bleedBox.getLeft();
                                right = bleedBox.getRight();
                                System.out.println("BleedBox の[top, bottom, left, right]は、");
                                System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); 
                            }
                        }
                        else
                        {
                            System.out.println("このページにはBleedBoxはありません。");
                        }

                        if(page.hasTrimBox())
                        {
                            try(PtlRect trimBox = page.getTrimBox())
                            {
                                top = trimBox.getTop();
                                bottom = trimBox.getBottom();
                                left = trimBox.getLeft();
                                right = trimBox.getRight();
                                System.out.println("TrimBox の[top, bottom, left, right]は、");
                                System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); 
                            }
                        }
                        else
                        {
                            System.out.println("このページにはTrimBoxはありません。");
                        }

                        if(page.hasArtBox())
                        {
                            try(PtlRect artBox = page.getArtBox())
                            {
                                top = artBox.getTop();
                                bottom = artBox.getBottom();
                                left = artBox.getLeft();
                                right = artBox.getRight();
                                System.out.println("ArtBox の[top, bottom, left, right]は、");
                                System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); 
                            }
                        }
                        else
                        {
                            System.out.println("このページにはArtBoxはありません。");
                        }
                    }
                }
            }

        }

        ...【GatPageCount.javaと同じ処理のため省略
             ・PtlException, Exception, Error を catchするエラー処理
             ・finally文で"--完了--"と表示する処理】...

    }
}

サンプルファイル名

GetBoundary.java

入出力操作の例

C:\samples>java cookbook.GetBoundary 
usage: java GetBoundary in-pdf-file

C:\samples>java cookbook.GetBoundary CSS-Print-v4.pdf 
ページ数:140
ページ数が10ページを超えています。
ページ境界の値を表示するのは先頭10ページまでとなります。
ページ:1
MediaBox の[top, bottom, left, right]は、
[285.00003, 0.0, 0.0, 210.00002]です。
CropBox の[top, bottom, left, right]は、
[285.00003, 0.0, 0.0, 210.00002]です。
BleedBox の[top, bottom, left, right]は、
[274.00003, 10.999998, 10.999998, 199.0]です。
TrimBox の[top, bottom, left, right]は、
[271.0, 14.0, 14.0, 196.0]です。
ArtBox の[top, bottom, left, right]は、
[271.0, 14.0, 14.0, 196.0]です。

...【以降は省略】...