2010-03-30 26 views
32

¿Hay alguna manera de tener un código que abra un archivo PDF en la aplicación Java de una manera independiente? Me refiero a usar un archivo por lotes en Windows podría hacer eso. ¿Hay alguna otra manera de tener un código independiente de plataforma para abrir archivos PDF sobre la marcha?Abrir archivo PDF sobre la marcha desde una aplicación Java

+0

¿Qué quiere decir por "abrir"? ¿Te refieres a "abrir Adobe Reader para mostrar un documento PDF específico"? – Kris

+0

Lo siento, creo que no definí específicamente el "abrir". Sí, como en lo que pensaste. ;) –

Respuesta

72

que iba a tratar Desktop.open(File), que:

inicia la aplicación asociada para abrir el archivo.

lo que este código debe hacer el truco:

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 ¿Qué harías si quisieras que el archivo pdf se abriera en tu propia aplicación para que puedas interactuar a tu manera? Gracias. – chepukha

+0

@chepukha: en ese caso, este código debería ser irrelevante para usted, ya que su componente de lectura de PDF debe tener sus propios métodos para cargar un archivo. –

+0

sí, entiendo eso. ¿Debo hacer otra pregunta para eso? – chepukha

2

Se puede utilizar en tiempo de ejecución para ejecutar y el guión y también hay varios lectores de PDF Java por ahí (es decir Icepdf, JPedal, PDFRenderer).

+0

Gracias por las sugerencias ...;) –

+0

Gracias de nuevo, parece que ICEpdf se ajusta al modelo de licencia que necesito. – Kingsolmn

0

Use este para abrir el archivo PDF utilizando 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); 
} 

Este código se utiliza para abrir el PDF y otros archivos.

+2

Esta solución funciona bien en Windows, pero no es independiente de la plataforma, que es lo que pidió OP. – THelper

-3

Usar este código para abrir un archivo específico:

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

solución de Michael Meyer no funcionó bastante para mí. Específicamente, una ruta con espacios falla con una IllegalArgumentException en lugar de una IOException.

Aquí es lo que funciona para mí:

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