2010-03-30 18 views
32

C'è un modo per avere un codice che apre un file PDF nell'applicazione Java in una piattaforma indipendente? 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?Apri un file PDF al volo da un'applicazione Java

+0

Che cosa si intende per "aprire"? Intendi come in "avviare Adobe Reader per visualizzare un documento PDF specifico"? – Kris

+0

Scusa, credo di non aver definito in modo specifico l '"aperto". Sì, come quello che hai pensato. ;) –

risposta

72

mi piacerebbe provare 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 
    } 
} 
+0

+1 Cosa faresti se vuoi che il file pdf venga aperto nella tua app in modo che tu possa interagire con esso a modo tuo? Grazie. – chepukha

+0

@chepukha: In questo caso, questo codice dovrebbe essere irrilevante per te, poiché il tuo componente di lettura PDF dovrebbe avere i propri metodi per caricare un file. –

+0

sì, lo capisco. Dovrei fare un'altra domanda per quello? – chepukha

2

È possibile utilizzare runtime per eseguire e sceneggiatura e ci sono anche diversi visualizzatori Java PDF là fuori (cioè Icepdf, JPedal, PDFRenderer).

+0

Grazie per i suggerimenti ...;) –

+0

Grazie ancora, sembra che ICEpdf si adatti al modello di licenza che mi serve. – Kingsolmn

0

Utilizzare questo per aprire file pdf utilizzando 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 viene utilizzato per aprire il PDF e altri file.

+2

Questa soluzione funziona bene su Windows, ma non è indipendente dalla piattaforma, come richiesto dall'OP. – THelper

-3

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

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 ciò che 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); 
     } 
    }