PDFファイルをJavaプラットフォームに依存しない方法でアプリケーションを開くコードを作成する方法はありますか?Windowsでバッチファイルを使用すると、プラットフォームに依存しないコードでPDFファイルをオンザフライで開く方法はありますか?
Desktop.open(File)
を試してみます。
関連するアプリケーションを起動してファイルを開きます。
そのため、このコードはトリックを実行する必要があります。
if (Desktop.isDesktopSupported()) {
try {
File myFile = new File("/path/to/file.pdf");
Desktop.getDesktop().open(myFile);
} catch (IOException ex) {
// no application registered for PDFs
}
}
ランタイムを使用してスクリプトを実行し、いくつかのJava PDF閲覧者(Icepdf、JPedal、PDFRenderer)など)を使用できます。
Michael Meyerのソリューションは私にとってはうまくいきませんでした。具体的には、スペースを含むパスはIOExceptionではなくIllegalArgumentExceptionで失敗します。
ここに私のために働くものがあります:
if (Desktop.isDesktopSupported()) {
try {
File theUMFile = new File(usersManualPath);
Desktop.getDesktop().open(theUMFile);
}
catch (FileNotFoundException fnf){
okDialog(msg_fnf);
theConcours.GetLogger().log(Level.SEVERE, null, fnf);
theConcours.GetLogger().info(msg_fnf);
}
catch (IllegalArgumentException fnf) {
okDialog(msg_fnf);
theConcours.GetLogger().log(Level.SEVERE, null, fnf);
theConcours.GetLogger().info(msg_fnf);
}
catch (IOException ex) {
okDialog(msg_cno);
theConcours.GetLogger().log(Level.SEVERE, null, ex);
theConcours.GetLogger().info(msg_cno);
}
}
これを使用して、Javaを使用してPDFファイルを開きます
File file = new File(filepath);
if (file.toString().endsWith(".pdf"))
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file);
else {
Desktop desktop = Desktop.getDesktop();
desktop.open(file);
}
このコードは、pdfやその他のファイルを開くために使用されます。