
PDFドキュメントをPDFを開く際のウィンドウの状態開く際のウィンドウの状態について設定します。
PDFファイルを開いたときのウィンドウ表示の状態を設定できます。
設定できるのは、ドキュメントのウィンドウを最初に表示されるページのサイズに合わせるか否か、ドキュメントのウィンドウをスクリーンの中央に配置するか否か、フルスクリーンモードで開くか否かです。それぞれを組み合わせたウィンドウ表示の状態を設定できます。
本サンプルプログラムでは、入力PDFについて、ページにウィンドウサイズを合わせるか否か、ドキュメントのウィンドウをスクリーン中央に配置するか否か、フルスクリーンモードで開くか否かのそれぞれを設定されたPDFドキュメントを出力します。
| 定数値名 | 内容 | 値 |
|---|---|---|
| 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 -- 完了 --