在Java中使用默认浏览器打开PDF文件

3

代码片段

    public class AnyPlatformAppPDF {

        public static void main(String[] args) {

          try {

            File pdfFile = new File("c:\\Users\\ADMIN\\Desktop\\css\\Praveen_Profile.pdf");
            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!");
            }

            System.out.println("Done");

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

        }

        public static void openWebpage(java.net.URI uri) {
            Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
            if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
                try {
                    desktop.browse(uri);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

我尝试使用这段代码在浏览器中打开PDF文件,但它无法打开。我正在使用Java来完成此操作。 我该怎么解决?


程序成功运行,但它在Adobe Reader中打开,我需要通过浏览器打开它。 - Praveen
我是Java的新手,刚刚开始,我还没有使用过。 - Praveen
如果这可以帮到你的话,可以尝试使用它并更新代码:https://dev59.com/yXA65IYBdhLWcg3wogKe - Naman
确定空指针 - Praveen
尝试过但没有成功。 - Praveen
显示剩余5条评论
1个回答

4
使用进程构建器可能会解决您的问题;
//Windows
ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe", "/C", "explorer c:\\Users\\ADMIN\\Desktop\\css\\Praveen_Profile.pdf");

//Linux

ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", "sensible-browser c:\\Users\\ADMIN\\Desktop\\css\\Praveen_Profile.pdf");

//

processBuilder.start();

如何将此流程构建器实现到上述程序中,Alican Beydemir。 - Praveen
首先清除所有与“桌面”相关的逻辑,然后进行操作系统一致性的“if else”检查 https://www.mkyong.com/java/how-to-detect-os-in-java-systemgetpropertyosname/,之后在“if else”范围内创建适当的processbuilder,在try catch中使用start方法... - Alican Beydemir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接