Apri il file PDF al volo da un’applicazione Java

C’è un modo per avere un codice che apre un file PDF in un’applicazione Java in modo indipendente dalla piattaforma? Voglio dire che usare un file batch in Windows potrebbe farlo. C’è un altro modo per avere un codice indipendente dalla piattaforma per aprire i file PDF al volo?

Desktop.open(File) , che:

Avvia l’applicazione associata per aprire il file.

Quindi questo codice dovrebbe fare il trucco:

 if (Desktop.isDesktopSupported()) { try { File myFile = new File("/path/to/file.pdf"); Desktop.getDesktop().open(myFile); } catch (IOException ex) { // no application registered for PDFs } } 

È ansible utilizzare Runtime per eseguire e script e ci sono anche diversi visualizzatori di file PDF Java (ie Icepdf, JPedal, PDFRenderer).

La soluzione di Michael Meyer non ha funzionato per me. In particolare, un percorso con spazi non riesce con un IllegalArgumentException piuttosto che un IOException.

Ecco cosa funziona per me:

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

Usalo per aprire il file pdf usando java

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

Questo codice è usato per aprire il tuo pdf e altri file.

Usa questo codice per aprire un file specifico:

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