Swing ベースの PDF ビューアを起動する
以下は、JavaFX で作成した小さな Web ブラウザー ( willow-browserという名前) から抽出したコードです。
webEngine.locationProperty().addListener(new ChangeListener<String>() {
@Override public void changed(ObservableValue<? extends String> observableValue, String oldLoc, String newLoc) {
if (newLoc.endsWith(".pdf")) {
try {
final PDFViewer pdfViewer = new PDFViewer(false);
pdfViewer.openFile(new URL(newLoc));
} catch (Exception ex) {
// handle bad pdf url . . . most likely no action required
}
}
}
}
このコードは、URL をロードするために起動するサードパーティの Swing ベースの pdf ビューアを使用します。Swing pdf ビューアは別のウィンドウで実行されるため、Swing/JavaFX 統合の問題はなく、動作しているように見えました。
動作させるには、柳のブラウザー ソースのコピーをダウンロードしてビルドします (サイトでホストされているサンプル バイナリには pdf ビューアーが含まれておらず、ソース ビルドのみが含まれています)。
理想的には、コードは uri 文字列に加えて http コンテンツ タイプをクエリして、ファイルが pdf であることを判断しますが、これには、WebView の場合に取得するのが難しい、少し低レベルのネットワーク アクセスが必要です。多くのサイトで pdf コンテンツを完全に正確に検出することに関心がない場合は、コンテンツ タイプを使用して pdf を判別しなくても問題ありません。
Swing pdf ビューアで期待どおりの結果が得られない場合は、他にもjpedalfxやICEpdfなどの pdf ビューアを試すことができます。
ネイティブ PDF ビューアを起動する
必要に応じて、pdf の URL でHostServices.showDocument(uri)を呼び出すことができます。これにより、ローカルの Web ブラウザーで URL を開くことがトリガーされます。一部のブラウザーには、pdf ビューアーが組み込まれているか、Acrobat リーダーを使用して pdf を表示するように設定されています。
この場合、表示する PDF の URL を決定するコードは上記のコードと同じです。