5.1.4 ウィンドウオプションの設定

images/SetOpenModeOfWindow-top.png

狙い・効果

PDFドキュメントをPDFを開く際のウィンドウの状態開く際のウィンドウの状態について設定します。

処理の概要

PDFファイルを開いたときのウィンドウ表示の状態を設定できます。

設定できるのは、ドキュメントのウィンドウを最初に表示されるページのサイズに合わせるか否か、ドキュメントのウィンドウをスクリーンの中央に配置するか否か、フルスクリーンモードで開くか否かです。それぞれを組み合わせたウィンドウ表示の状態を設定できます。

本サンプルプログラムでは、入力PDFについて、ページにウィンドウサイズを合わせるか否か、ドキュメントのウィンドウをスクリーン中央に配置するか否か、フルスクリーンモードで開くか否かのそれぞれを設定されたPDFドキュメントを出力します。

PDF Tool APIの主な機能

表5・4 各ウィンドウオプションを表す定数値
定数値名内容
WINDOWS_OPTION_NONE なし 0
WINDOWS_OPTION_FIT_WINDOW ページにウィンドウサイズを合あわせる 1
WINDOWS_OPTION_CENTER_WINDOW ウィンドウを画面中央に配置 2
WINDOWS_OPTION_FULL_SCREEN フルスクリーンモードで開く 4

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class SetOpenModeOfWindow {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.print("usage: java SetOpenModeOfPageOfWindow in-pdf-file out-pdf-file");
        System.out.println(" fit-window center-window full-screen");
        System.out.println("fit-window : ページにウィンドウサイズを合わせる" +
                           " [0 でフラグoff, 1 でフラグon]");
        System.out.println("center-window : ウィンドウを画面中央に配置" +
                           " [0 でフラグoff, 1 でフラグon]");
        System.out.println("full-screen : フルスクリーンモードで開く" +
                           " [0 でフラグoff, 1 でフラグon]");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 5) {
            printUsage();
            return;
        }
        // コマンドライン引数の読み取り
        boolean flagFitWindow;
        boolean flagCenterWindow;
        boolean flagFullScreen;
        int windowOption;
        // fit-window 
        try {
            flagFitWindow = readBoolArgs(args[2], "fit-windowは" +
                                           "0か1で指定してください。");
        }
        catch (IllegalArgumentException ex) {
            System.out.println(ex.getMessage());
            printUsage(); // usageメッセージの表示
            return;
        }
        // center-window
        try {
            flagCenterWindow = readBoolArgs(args[3], "center-windowは" +
                                           "0か1で指定してください。");
        }
        catch (IllegalArgumentException ex) {
            System.out.println(ex.getMessage());
            printUsage(); // usageメッセージの表示
            return;
        }
        // full-screen
        try {
            flagFullScreen = readBoolArgs(args[4], "full-screenは" +
                                         "0か1で指定してください。");
        }
        catch (IllegalArgumentException ex) {
            System.out.println(ex.getMessage());
            printUsage(); // usageメッセージの表示
            return;
        }

        // 各フラグの論理和をWindowOptionに設定。
        windowOption = PtlOpenMode.WINDOWS_OPTION_NONE;
        if(flagFitWindow) {
            windowOption = windowOption | PtlOpenMode.WINDOWS_OPTION_FIT_WINDOW;
        }
        if(flagCenterWindow) {
            windowOption = windowOption | PtlOpenMode.WINDOWS_OPTION_CENTER_WINDOW;
        }
        if(flagFullScreen) {
            windowOption = windowOption | PtlOpenMode.WINDOWS_OPTION_FULL_SCREEN;
        }

        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()) { // 開き方の取得
                /*----- 開き方のデフォルト設定 -----*/
	...【SetOpenAction.javaと同じ処理のため省略
	  ・サムネイルとページを表示するページモードに設定
	  ・連続ページの形で表示するページレイアウトに設定
	  ・ユーザーインターフェイスのうちウィンドウコントロールを非表示に設定
	  ・ウィンドウのタイトルバーに文書タイトルを表示するように設定
	  ・右から左に読み上げオプションを設定する】...

	...【SetOpenModeOfPage.javaと同じ処理のため省略
	  ・最初に開くページを2ページ目にし、あらかじめ決まった座標をズームして開くよう設定】...
                /*----- 以上、ここまでが開き方のデフォルト設定 -----*/

                // ウインドウオプションを設定(論理和)
                // (デフォルト設定よりも優先させるために後で設定する)
                openmode.setWindowOption(windowOption);
            }

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

    /**
     * 0または1を入力されたargsにより、trueまたはfalseを返すメソッド。
     * 
     * @param args 与えられるコマンドライン引数。0または1でtrueまたはfalseを指定する。
     * @param errorMessage argsが0か1でなかった場合に出力されるエラーメッセージを指定。
     * @return argsの数値を読み取った結果を戻す
     * @throws java.lang.IllegalArgumentException argsが0か1でなかった場合に発生。
     */
    public static boolean readBoolArgs(String args, String errorMessage)
        throws IllegalArgumentException
    {
	...【AppendAnnotHighlight.javaと同じ処理のため省略】...
    }    
}

プログラムファイル名

SetOpenModeOfWindow.java

入出力操作の例

C:\samples>java cookbook.SetOpenModeOfUI setopenmode.pdf setopenmodeUI-111.pdf 1 1 1  
-- 完了 --

C:\samples>java cookbook.SetOpenModeOfWindow 
usage: java SetOpenModeOfPageOfWindow in-pdf-file out-pdf-file fit-window center-window full-screen
fit-window : ページにウィンドウサイズを合わせる [0 でフラグoff, 1 でフラグon]
center-window : ウィンドウを画面中央に配置 [0 でフラグoff, 1 でフラグon]
full-screen : フルスクリーンモードで開く [0 でフラグoff, 1 でフラグon]

C:\samples>java cookbook.SetOpenModeOfWindow setopenmode.pdf setopenmodeWindow-000.pdf 0 0 0 
-- 完了 --