web-dev-qa-db-ja.com

PDFアプリケーションからオンザフライでファイルを開くJavaアプリケーション

PDFファイルをJavaプラットフォームに依存しない方法でアプリケーションを開くコードを作成する方法はありますか?Windowsでバッチファイルを使用すると、プラットフォームに依存しないコードでPDFファイルをオンザフライで開く方法はありますか?

37
Mr CooL

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
    }
}
83
Michael Myers

ランタイムを使用してスクリプトを実行し、いくつかのJava PDF閲覧者(Icepdf、JPedal、PDFRenderer)など)を使用できます。

3
mark stephens

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);
        }
    } 
1
Ed S

これを使用して、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やその他のファイルを開くために使用されます。

0
amit