我尝试在Java中打开PDF,但无法正常工作

时间:2020-06-24 13:53:40

标签: java

我试图通过单击一个按钮来打开pdf。路径实际上是正确的(我可以在浏览器中打开它),但是它不起作用。到底是什么问题?

这是输出:

文件:/Users/miladvosoughi/Documents/Prak/schach/target/classes/mainMenu/ba.pdf

文件不存在!

    private void openHelpPDF() {
         
        try {
            String adr = getClass()
                    .getResource("/mainMenu/ba.pdf").toString();
            
            System.out.println(adr);
            
            File pdfFile = new File(adr);
            if (pdfFile.exists()) {

                if (Desktop.isDesktopSupported()) {
                    Desktop.getDesktop().open(pdfFile);
                } else {
                    System.out.println("Awt Desktop is not supported!");
                }

            } else {
                System.out.println("File is not exists!");
            }

     
          } catch (Exception ex) {
            ex.printStackTrace();
          }
        
    }

1 个答案:

答案 0 :(得分:3)

String adr = getClass().getResource("/mainMenu/ba.pdf").toString(); 返回文件名。 The object returned from Class.getResource is a URL.

应用程序资源不是文件。您永远无法确定它是文件。

如果要传递资源,则必须将资源URL复制到一个临时文件,然后打开该文件:

Path pdf = Files.createTempFile(null, ".pdf");
try (InputStream source =
    getClass().getResourceAsStream("/mainMenu/ba.pdf")) {

    Files.copy(source, pdf,
        StandardCopyOption.REPLACE_EXISTING);
}

Desktop.getDesktop().open(pdf.toFile());