5.1.2 ページモード・ページレイアウトの指定

images/SetOpenModeOfPage-top.png

狙い・効果

ページモードを指定ページモード・ページレイアウトを指定します。

処理の概要

PDFファイルを開いたときの表示の種類として、ページモード、ページレイアウトを指定できます。

ページモードは文書を開いた時のページの表示方法で、文書ページと一緒に開かれるパネルを指定できます。ページレイアウトは文書を開いた時のレイアウトで、単一ページ表示や見開きページ表示などを指定できます。

本サンプルプログラムでは、入力PDFのページモード種別とページレイアウト種別を指定したPDFドキュメントを出力します。

PDF Tool APIの主な機能

表5・1 指定可能なページモード
PAGE_MODE_USE_ATTACHMENTS 添付ファイルパネルとページ
PAGE_MODE_USE_NONE ページのみ表示
PAGE_MODE_USE_OC レイヤーパネルとページ
PAGE_MODE_USE_OUTLINES アウトラインパネルとページ
PAGE_MODE_USE_THUMBS サムネイルパネルとページ
表5・2 指定可能なページレイアウトタイプ
PAGE_LAYOUT_ONE_COLUMN 連続ページ
PAGE_LAYOUT_SINGLE_PAGE 単一ページ
PAGE_LAYOUT_TWO_COLUMN_LEFT 奇数ページを左側にして連続見開きページ
PAGE_LAYOUT_TWO_COLUMN_RIGHT 奇数ページを右側にして連続見開きページ
PAGE_LAYOUT_TWO_PAGE_LEFT 奇数ページを左側にして見開きページ
PAGE_LAYOUT_TWO_PAGE_RIGHT 奇数ページを右側にして見開きページ

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class SetOpenModeOfPage {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.print("usage: java SetOpenModeOfPage in-pdf-file out-pdf-file");
        System.out.println(" ページモード種別 ページレイアウト種別");
        System.out.println("ページモード種別: ");
        System.out.println("0 : ページのみ表示 1 : アウトラインパネルとページ");
        System.out.println("2 : サムネイルパネルとページ 3 : レイヤーパネルとページ");
        System.out.println("4 : 添付ファイルパネルとページ");
        System.out.println("ページレイアウト種別: ");
        System.out.println("0 : 単一ページ");
        System.out.println("1 : 連続ページ");
        System.out.println("2 : 奇数ページを左側にして連続見開きページ");
        System.out.println("3 : 奇数ページを右側にして連続見開きページ");
        System.out.println("4 : 奇数ページを左側にして見開きページ");
        System.out.println("5 : 奇数ページを右側にして見開きページ");
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 4) {
            printUsage();
            return;
        }
        // コマンドライン引数の読み取り
        // ページモードの選択
        PtlOpenMode.PAGE_MODE pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_NONE;
        switch(args[2]) {
        case "0": //0 : ページのみ表示
            pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_NONE;
            break;
        case "1": //1 : アウトラインパネルとページ
            pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_OUTLINES;
            break;
        case "2": //2 : サムネイルパネルとページ
            pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_THUMBS;
            break;
        case "3": //3 : レイヤーパネルとページ
            pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_OC;
            break;
        case "4": //4 : 添付ファイルパネルとページ
            pageModeType = PtlOpenMode.PAGE_MODE.PAGE_MODE_USE_ATTACHMENTS;
            break;
        default :
            System.out.println("ページモード種別は0から4の整数で指定して下さい。");
            printUsage();
            break;
        }

        // ページレイアウト種別:
        PtlOpenMode.PAGE_LAYOUT pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_SINGLE_PAGE;
        switch(args[3]) {
        case "0": //0 : 単一ページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_SINGLE_PAGE;
            break;
        case "1": //1 : 連続ページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_ONE_COLUMN;
            break;
        case "2": //2 : 奇数ページを左側にして連続見開きページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_TWO_COLUMN_LEFT;
            break;
        case "3": //3 : 奇数ページを右側にして連続見開きページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_TWO_COLUMN_RIGHT;
            break;
        case "4": //4 : 奇数ページを左側にして見開きページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_TWO_PAGE_LEFT;
            break;
        case "5": //5 : 奇数ページを右側にして見開きページ
            pageLayoutType = PtlOpenMode.PAGE_LAYOUT.PAGE_LAYOUT_TWO_PAGE_RIGHT;
            break;
        default :
            System.out.println("ページレイアウト種別は0から5の整数で指定して下さい。");
            printUsage();
            break;
        }


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

            try (PtlDocProperty docProperty = doc.getDocProperty();  // PDFの文書プロパティ
                 PtlOpenMode openmode = docProperty.getOpenMode()) { // 開き方の取得
                /*----- 開き方のデフォルト設定 -----*/
                // オープンアクションの設定
                try (PtlActionGoTo act = new PtlActionGoTo(); // 設定するGoToアクション
                     PtlDestFitR dst = new PtlDestFitR()) {   // PDFの宛先
                    // 宛先ページの設定
                    // 最初に開くページを2ページ目にセット(ページ番号は0ベース)
                    dst.setPageNumber(1);
                    // 開く座標の設定
                    // leftの設定
                    dst.setLeft(100.0f);
                    //dst.setLeftNull();
                    // bottomの設定
                    dst.setBottom(100.0f);
                    //dst.setBottomNull();
                    // rightの設定
                    dst.setRight(120.0f);
                    //dst.setRightNull();
                    // topの設定
                    dst.setTop(150.0f);
                    //dst.setTopNull();
                    // zoomの設定
                    dst.setZoom(100.0f);
                    //dst.setZoomNull();

                    act.setDest(dst);
                    openmode.setOpenAction(act);
                }
	...【SetOpenAction.javaと同じ処理のため省略
	  ・ユーザーインターフェイスのうちウィンドウコントロールを非表示に設定
	  ・ウィンドウをページのサイズに合わせ、画面中央に表示するように設定
	  ・ウィンドウのタイトルバーに文書タイトルを表示するように設定
	  ・右から左に読み上げオプションを設定する】...
                /*----- 以上、ここまでが開き方のデフォルト設定 -----*/


                // ページモードの設定 ページレイアウトの設定
                // (デフォルト設定よりも優先させるために後で設定する)
                openmode.setPageMode(pageModeType);
                openmode.setPageLayout(pageLayoutType);

            }

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

プログラムファイル名

SetOpenModeOfPage.java

入出力操作の例

C:\samples>java cookbook.SetOpenModeOfPage 
usage: java SetOpenModeOfPage in-pdf-file out-pdf-file ページモード種別 ページレイアウト種別
ページモード種別: 
0 : ページのみ表示 1 : アウトラインパネルとページ
2 : サムネイルパネルとページ 3 : レイヤーパネルとページ
4 : 添付ファイルパネルとページ
ページレイアウト種別: 
0 : 単一ページ
1 : 連続ページ
2 : 奇数ページを左側にして連続見開きページ
3 : 奇数ページを右側にして連続見開きページ
4 : 奇数ページを左側にして見開きページ
5 : 奇数ページを右側にして見開きページ

C:\samples>java cookbook.SetOpenModeOfPage setopenmode.pdf setopenmode-00.pdf 0 0 
-- 完了 --