从Java应用程序中即时打开PDF文件

时间:2010-03-30 16:44:17

标签: java pdf

有没有办法让代码以独立于平台的方式在Java应用程序中打开PDF文件?我的意思是在Windows中使用批处理文件可以做到这一点。有没有其他方法可以使用平台无关的代码来动态打开PDF文件?

6 个答案:

答案 0 :(得分:79)

我会尝试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
    }
}

答案 1 :(得分:2)

您可以使用Runtime执行和编写脚本,并且还有几个Java PDF查看器(即Icepdf,JPedal,PDFRenderer)。

答案 2 :(得分:1)

迈克尔迈耶的解决方案并不适合我。具体来说,带有空格的路径因IllegalArgumentException而非IOException而失败。

这对我有用:

    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);
        }
    } 

答案 3 :(得分:0)

使用它来使用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和其他文件。

答案 4 :(得分:0)

如果您的应用程序在jar存档中组装,则第三方应用程序无法访问应用程序中的src目录。您应该将文件与src分开放置。

当然,Java查找图标,因为它是Java API。您可以通过以下方法访问src文件夹中的任何资源:

 URL url = getClass().getResource("/path/in/src");
 File file = new File(url.toURI());

我当前正在使用以下内容:

        if (Desktop.isDesktopSupported()) {
             try {
                    URL url = getClass().getResource("/pdf/XXXX.pdf");
                    File myFile = new File(url.toURI());
                    Desktop.getDesktop().open(myFile);
            } catch (IOException | URISyntaxException ex) {
                        // no application registered for PDFs
                }
            }

答案 5 :(得分:-3)

使用此代码打开特定文件:

String cmds[] = new String[] {"cmd", "/c", "C:\\Users\\PC\\Desktop\\EA01.pdf"};
try {
    Runtime.getRuntime().exec(cmds);
}