Java PDFビューアのユーザーインターフェースをカスタマイズする
JPedalビューアは、PDFの表示、検索、抽出、変換のための豊富な機能を備えたPDFビューアです。すべてのユーザーがすべての機能を必要とするわけではないため、ビューアはプロパティのセットを使用して、ビューアの外観と利用可能な機能を制御できます。
これらのプロパティは、プロパティファイルまたはビューアに提供されるプロパティのマップを通じて制御できます。
ビューアは、3つの方法でプロパティファイルを読み込むことができます。
VMの引数“org.JPedal.Viewer.Prefs” を使用してプロパティファイルの場所を指定する。
ビューアのコンストラクタViewer(String) またはViewer(Accessible, String) にプロパティファイルのパスを提供する。後者については、こちらの詳細なチュートリアルを参照 して、別のアプリケーションにビューアを埋め込むことができます。
それ以外の場合、JPedalは、JPedalのjarと同じディレクトリにある.properties.xmlというファイルを読み込みます。存在しない場合は、デフォルトのプロパティを持つファイルが自動的に作成されます。
VMの引数とビューアのコンストラクタは、jarファイル内の場所、サーバーの場所、またはローカルマシンの場所をjar://、http://、またはfile://で始まるアドレスで指定できます。
プロパティファイルが存在しない場合(ビューアを最初に開いたときなど)、ビューアのデフォルトプロパティが使用され、ビューアを閉じる際に新しいファイルが作成されます。この新しいファイルは、VMの引数が設定されている場合はその場所に、設定されていない場合はjarと同じディレクトリに作成されます。
ビューアのプロパティは、ビューアにロードされたマップで指定できます。
この方法でロードされたプロパティは、ビューア使用中に編集できますが、使用間で保存されません。プロパティマップは、以下のビューアプロパティセクションで詳述されているPropertiesFileクラスの静的キーを使用する必要があります。
//Viewerオブジェクトを作成
final Viewer viewer = new Viewer();
//プロパティ用のMapを作成
final HashMap<String, String> properties = new HashMap<>();
properties.put(PropertiesFile.KEY_BORDER_TYPE, "0");
properties.put(PropertiesFile.KEY_SMOOTH_IMAGES, "true");
//プロパティをロード
viewer.loadProperties(properties);
//Viewerを使用できるように設定
viewer.setupViewer();
プロパティがロードされると、ビューアは提供されたプロパティに合わせて更新されます。
ビューア内には、プロパティファイルを設定できる環境設定ウィンドウがあります(ただし、すべての値を有効にするには保存して再起動する必要があります)。
このウィンドウは、メニュー項目編集 -> 環境設定(Ctrl + K)からアクセスできます。

環境設定ウィンドウには、ビューアのプロパティのほとんどのオプションが含まれています。ここから、ビューアのユーザーインターフェースもメニューセクションから変更できます。
メニューセクションは、ビューアの異なる領域を表す5つのタブに分かれています(下の画像を参照)。各タブには、個々のボタンや要素を非表示にできる要素のツリーが含まれており、それぞれの下にはGUIからこの要素を完全に削除するボタンがあります。

希望するプロパティを設定したら、現在のプロパティまたは新しいプロパティファイルに保存できます。
- OKボタンを使用して、現在のプロパティファイルにプロパティを保存。
- 「名前を付けて保存」ボタンを使用して新しいプロパティファイルに保存。これにより、変更前のビューアのプロパティはそのまま維持されます。
メニューバーのファイルメニューの表示/非表示を設定します。この要素は、ファイルメニューに含まれる要素を定義する複数の子要素を持ちます。要素の名前は、英語の要素名を1つの単語にマージし、子要素を持つメニューの場合は「Menu」を末尾に追加した名前になります。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
メニューバーの編集メニューの表示/非表示を設定します。この要素は、編集メニューに含まれる要素を定義する複数の子要素を持ちます。要素の名前は、英語の要素名を1つの単語にマージし、子要素を持つメニューの場合は「Menu」を末尾に追加した名前になります。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
メニューバーの表示メニューの表示/非表示を設定します。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。
プロパティファイル
メニューバーのエクスポートメニューの表示/非表示を設定します。この要素は、エクスポートメニューに含まれる要素を定義する複数の子要素を持ちます。要素の名前は、英語の要素名を1つの単語にマージし、子要素を持つメニューの場合は「Menu」を末尾に追加した名前になります。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
メニューバーのツールメニューの表示/非表示を設定します。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。
プロパティファイル
メニューバーのヘルプメニューの表示/非表示を設定します。この要素は、ヘルプメニューに含まれる要素を定義する複数の子要素を持ちます。要素の名前は、英語の要素名を1つの単語にマージし、子要素を持つメニューの場合は「Menu」を末尾に追加した名前になります。
親要素 この要素の親は「MenuBarMenu」です
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
UIの上部にあるボタンバーの内容の表示/非表示を設定します。この要素は、ボタンバーに存在する要素を定義する複数の子要素を持ちます。
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
UIの上部にある表示オプションの表示/非表示を設定します。この要素は、さまざまな表示オプション要素を定義する複数の子要素を持ちます。
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
UIの上部にあるナビゲーションバーの表示/非表示を設定します。この要素は、さまざまな表示オプション要素を定義する複数の子要素を持ちます。
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
UIの上部にあるサイドタブバーの表示/非表示を設定します。この要素は、さまざまな表示オプション要素を定義する複数の子要素を持ちます。
値 ブール値。falseに設定すると、この要素がメニューバーから削除されます。すべての子要素も、含める要素を制御するためのブール値を受け入れます。
例
プロパティファイル
メニューバーを表示するかどうかを制御します。配置されているパネルも含みます。
値 ブール値。メニューバーを表示する場合はtrueです。
例
プロパティファイル
ボタンバーを表示するかどうかを制御します。配置されているパネルも含みます。
値 ブール値。ボタンバーを表示する場合はtrueです。
例
プロパティファイル
ナビゲーションバーを表示するかどうかを制御します。配置されているパネルも含みます。
値 ブール値。ナビゲーションバーを表示する場合はtrueです。
例
プロパティファイル
サイドタブバーを表示するかどうかを制御します。配置されているパネルも含みます。
値 ブール値。サイドタブバーを表示する場合はtrueです。
例
プロパティファイル
ページのテキストと画像のハイライト色を設定します。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
ページ上でハイライトされたテキストの色を設定します。これは、テキスト周辺の領域の色であるハイライトカラーに加えて設定されます。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
浮動小数点値を使用してハイライトの不透明度/透明度を設定します。
値 不透明度を表す浮動小数点値。1は完全な不透明度、0は完全な透明度を意味します。
例
プロパティファイル
すべてのハイライトオプションを無視し、ハイライト領域内に含まれるすべての色を反転させます。
値 ブール値。ハイライトで逆の色を使用する場合はtrueです。
例
プロパティファイル
編集可能なフォームフィールドをハイライトして、ページ上でより目立つようにします。
値 ブール値。編集可能なフォームフィールドをハイライトする場合はtrueです。
例
プロパティファイル
highlightFormFieldsがtrueに設定されている場合に、フォームフィールドのハイライトに使用する色を指定します。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
ドキュメント内のテキストの色を、vfgColor(以下参照)で指定された値に置き換えるかどうかを制御するフラグ。
これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 ブール値。テキストの色を置き換える場合はtrueです。
例
プロパティファイル
テキストの色の置換を適用するために、すべてのRGBコンポーネントが下回る必要がある値。これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 非負の整数値。
例
プロパティファイル
replaceDocumentTextColorsがtrueに設定されている場合に、ページ上のテキストの置換色を設定します。
これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
ページのテキストコンテンツと共に、図形/線画の色も変更するかどうかを設定します。これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 ブール値。テキストの色を置き換える場合はtrueです。
例
プロパティファイル
デフォルトの白の代わりに、PDFページの色を設定します。 これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
PDFディスプレイパネルの背景を、ユーザー定義の設定に置き換えるかどうかを設定します。これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 ブール値。PDFパネルの背景色を置き換える場合はtrueです。
例
プロパティファイル
デフォルトの代わりに、PDFディスプレイパネルの色を設定します。 これは、ページのコンテンツを読みやすくし、アクセシビリティを向上させるのに役立ちます。
値 Color.getRGB()を使用して取得したRGB色を表す整数。
例
プロパティファイル
ビューアの起動時に、最後に開いたドキュメント(最近のファイルリストから)を再度開くかどうかを制御するフラグ。
値 ブール値。最後に表示したPDFを開く場合はtrueです。
例
プロパティファイル
ビューアが最後に開いたドキュメントを開いたときに開くページ。これはビューアが閉じられたときに設定されます。
値 開くページの非負の整数値。
例
プロパティファイル(最近のドキュメントリストが空のため含まれません)
PDFページの表示パネルの端からの余白のサイズを指定します。
値 余白の長さを示す非負の整数値。
例
プロパティファイル
サイドタブバーパネルを折りたたむためにクリックしたときに使用する分割ペインの仕切り位置を設定します。
値 仕切り位置の非負の整数値。
例
プロパティファイル
サイドタブバーパネルを展開するためにクリックしたときに使用する分割ペインの仕切り位置を設定します。
値 仕切り位置の非負の整数値。
例
プロパティファイル
新しいファイルが読み込まれても、サイドタブバーの仕切り位置を変更しないフラグ。
これはプロパティstartSideTabOpenを上書きします。
値 ブール値。サイドタブバーの仕切りが変更されない場合はtrueです。
例
プロパティファイル
PDFページを右クリックしたときにコンテキストメニューを表示するかどうかを制御するフラグ。このメニューは、テキスト/画像の抽出、テキストの全選択/選択解除、テキストのコピーなどのオプションを提供します。
値 ブール値。右クリック時にコンテキストメニューを表示する場合はtrueです。
例
プロパティファイル
Ctrlキー(Windows/Linux)またはCommandキー(Mac)を押しながらマウスホイールを使用して、拡大/縮小の値を増減できるようにするフラグ。
値 ブール値。マウスホイールで拡大/縮小の値を変更できる場合はtrueです。
例
プロパティファイル
プロパティファイルを読み取り専用としてフラグ設定します。これは基盤となるオペレーティングシステムでファイルを読み取り専用に設定するものではありませんが、ビューアの環境設定ウィンドウで変更を保存できないようにします。
これは、ライブアップデートされる値は引き続き使用できますが、状態は保存されないことを意味します。
値 ブール値。trueの場合、ビューアによってファイルを更新できません。
例
プロパティファイル
<readOnly value="false"/>
プロパティマップ 読み込みは常に読み取り専用として扱われるため、含まれていません
対面表示モードでのページめくりアニメーションを許可するフラグです。このアニメーションとコントロールにより、ページをドラッグして次のページに変更できます。アニメーションは本のページをめくるような外観を提供します。
値 ブール値。trueの場合、ページめくりアニメーションを有効にします。
例
プロパティファイル
<enhancedFacingMode value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_ENHANCED_FACING_MODE, "true");
この値は、ビューアのウィンドウのウィンドウタイトルを置き換えます。空の場合、ウィンドウタイトルは変更されません。
値 ウィンドウタイトルを置き換える文字列値。
例
プロパティファイル
<windowTitle value=""/>
プロパティマップ
map.put(PropertiesFile.KEY_WINDOW_TITLE, "");
ビューアで開くことができる最大ドキュメントサイズをメガバイト単位で設定します。この値を超えるファイルは開くことができません。
値 ファイルサイズをメガバイト単位で表す整数値。
例
プロパティファイル
<maxmultiviewers value="20"/>
プロパティマップ
map.put(PropertiesFile.KEY_MAX_MULTI_VIEWER_SIZE, "20");
印刷ダイアログで選択されるデフォルトプリンタの名前を設定します。空の場合、システムのデフォルトプリンタが使用されます。
値 プリンタ名を表す文字列値。
例
プロパティファイル
<defaultPrinter value=""/>
プロパティマップ
map.put(PropertiesFile.KEY_DEFAULT_PRINTER, "");
スキャナなどから読み込まれる画像のデフォルトDPI値を設定します。
値 DPIを表す整数値。
例
プロパティファイル
<defaultDPI value="72"/>
プロパティマップ
map.put(PropertiesFile.KEY_DEFAULT_DPI, "72");
使用する検索ウィンドウの種類を設定します。利用可能なオプションは、ビューア内部の検索ウィンドウ、外部の検索ウィンドウ、または検索メニュー項目です。
値 検索ウィンドウの種類を表す整数値。
0= 内部ウィンドウ1= 外部ウィンドウ2= メニュー項目
例
プロパティファイル
<searchWindowType value="0"/>
プロパティマップ
map.put(PropertiesFile.KEY_SEARCH_WINDOW_TYPE, "0");
PDFページの周りの境界線の表示/非表示を設定します。
値 ブール値。境界線を表示する場合はtrueです。
例
プロパティファイル
<borderType value="0"/>
プロパティマップ
map.put(PropertiesFile.KEY_BORDER_TYPE, "0");
ビューアのルック&フィールを設定します。デフォルトでは、ビューアはシステムのルック&フィールを使用します。
値 ルック&フィールのクラス名を表す文字列値。空の場合、システムのルック&フィールが使用されます。
例
プロパティファイル
<lookandfeel value=""/>
プロパティマップ
map.put(PropertiesFile.KEY_LOOK_AND_FEEL, "");
画像の解像度をDPI単位で設定します。この値は、画像のレンダリング品質に影響します。
値 解像度をDPI単位で表す整数値。
例
プロパティファイル
<resolution value="72"/>
プロパティマップ
map.put(PropertiesFile.KEY_RESOLUTION, "72");
マウスカーソルをページ上のコンテンツに応じて変更するかどうかを設定します(例:テキスト上でテキストカーソル、リンク上で手のカーソルなど)。
値 ブール値。ダイナミックカーソルを有効にする場合はtrueです。
例
プロパティファイル
<replacePdfDisplaywithCustom value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_REPLACE_PDF_DISPLAY_WITH_CUSTOM, "false");
ページをドラッグしている間もスクロールを許可するかどうかを設定します。
値 ブール値。ドラッグ中のスクロールを許可する場合はtrueです。
例
プロパティファイル
<allowDragScrolling value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_ALLOW_DRAG_SCROLLING, "false");
ビューアの起動時にヒントダイアログを表示するかどうかを設定します。
値 ブール値。起動時にヒントを表示する場合はtrueです。
例
プロパティファイル
<displaytipsonstartup value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_DISPLAY_TIPS_ON_STARTUP, "true");
ビューアを初めて起動したときに、最初の使用ポップアップを表示するかどうかを設定します。
値 ブール値。最初のポップアップを表示する場合はtrueです。
例
プロパティファイル
<showtitlebar value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_SHOW_TITLE_BAR, "true");
印刷ダイアログで使用するデフォルトのページ範囲を設定します。
値 整数値で表されるページ範囲のタイプ。
0= すべてのページ1= 現在のページ2= ページ範囲
例
プロパティファイル
<printPageRange value="0"/>
プロパティマップ
map.put(PropertiesFile.KEY_PRINT_PAGE_RANGE, "0");
ビューアの起動時にサイドタブバーを開くかどうかを設定します。
値 ブール値。サイドタブバーを開く場合はtrueです。
例
プロパティファイル
<startSideTabOpen value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_START_SIDE_TAB_OPEN, "false");
サイドタブバーが開いているときに、どのタブを最初に表示するかを設定します。
値 整数値で表されるタブのインデックス。
0= 署名タブ1= レイヤータブ2= しおりタブ-1= なし
例
プロパティファイル
<startSelectedSideTab value="-1"/>
プロパティマップ
map.put(PropertiesFile.KEY_START_SELECTED_SIDE_TAB, "-1");
自動スクロールモードを有効にするかどうかを設定します。このモードでは、ページが自動的にスクロールされます。
値 ブール値。自動スクロールを有効にする場合はtrueです。
例
プロパティファイル
<autoScroll value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_AUTO_SCROLL, "false");
自動スクロールモードでのスクロール速度をミリ秒単位で設定します。
値 スクロール間隔をミリ秒単位で表す整数値。
例
プロパティファイル
<autoScrollInterval value="500"/>
プロパティマップ
map.put(PropertiesFile.KEY_AUTO_SCROLL_INTERVAL, "500");
オフスクリーンレンダリング技術を使用するかどうかを設定します。これらの技術は、テキスト選択やハイライトなどのインタラクティブ機能を実現するために、ページの可視部分をメモリ内のイメージにレンダリングします。 この機能は、メモリ使用量を増やす代わりに、より高速な操作を実現します。
値 ブール値。trueの場合、オフスクリーンレンダリングが使用されます。
例
プロパティファイル
<useOffScreenRendering value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_USE_OFFSCREEN_RENDERING, "true");
フルオフスクリーンレンダリング技術を使用するかどうかを設定します。これはオフスクリーンレンダリングオプションと同様に機能しますが、ページ全体をメモリに格納するため、表示領域より大きいページのスクロール応答性が向上します。 この機能は、メモリ使用量を増やす代わりに、より高速な操作を実現します。
値 ブール値。trueの場合、フルオフスクリーンレンダリングが使用されます。
例
プロパティファイル
<fullOffScreenRendering value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_FULL_PAGE_OFFSCREEN_RENDERING, "true");
画像コンテンツの外観を改善するために、画像スムージング技術を使用するかどうかを設定します。
値 ブール値。trueの場合、画像スムージングが使用されます。
例
プロパティファイル
<useSmoothImage value="true"/>
プロパティマップ
map.put(PropertiesFile.KEY_SMOOTH_IMAGES, "true");
シェイプのストロークの幅を無視し、代わりに表示スケーリングに関わらず常に1ピクセルの太さでレンダリングするかどうかを設定します。
値 ブール値。trueの場合、線の幅は無視されます。
例
プロパティファイル
<hideLineWeights value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_HIDE_LINE_WEIGHTS, "false");
テキストコンテンツ内のURLをクリック可能にし、ユーザーのデフォルトブラウザでURLを開くかどうかを設定します。
値 ブール値。trueの場合、URLはクリック可能になります。
例
プロパティファイル
<treatURLTextAsLinks value="false"/>
プロパティマップ
map.put(PropertiesFile.KEY_TREAT_URL_TEXT_AS_LINK, "false");
環境設定ウィンドウにアクセスできるユーザーは、プロパティファイル内の値を変更できます。
これを防ぐために、プロパティファイル内の環境設定要素を無効にし、jarファイル内部に保存するなど、ユーザーがアクセスできない場所にプロパティファイルを保存することをお勧めします。
ただし、最近使用したドキュメント機能はプロパティファイルにファイル名を保存することで処理されることに注意してください。ファイルがjar内に保存されたり、読み取り専用になったりして更新できない場合、最近使用したドキュメントの値を更新できないため、ビューアを閉じたときに値が保存されません。
