2010-03-30 32 views
32

Có cách nào để có một mã mở một tệp PDF trong ứng dụng Java theo cách độc lập trên nền tảng không? Tôi có nghĩa là bằng cách sử dụng một tập tin thực thi trong Windows có thể làm điều đó. Có cách nào khác để có một mã độc lập nền tảng để mở các tập tin PDF trên bay?Mở tệp PDF ngay lập tức từ ứng dụng Java

+0

Ý anh là gì bằng cách "mở"? Bạn có nghĩa là trong "khởi động Adobe Reader để hiển thị một tài liệu PDF cụ thể"? – Kris

+0

Xin lỗi, tôi đoán tôi đã không xác định cụ thể "mở". Yup, như những gì bạn nghĩ đến. ;) –

Trả lời

72

Tôi muốn thử Desktop.open(File), trong đó:

ra mắt ứng dụng liên quan để mở tập tin.

Vì vậy, mã này nên làm như lừa:

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 Bạn sẽ làm gì nếu bạn muốn tệp pdf được mở trong ứng dụng của riêng bạn để bạn có thể tương tác với nó theo cách của riêng bạn? Cảm ơn. – chepukha

+0

@chepukha: Trong trường hợp đó, mã này không liên quan đến bạn, vì thành phần đọc PDF của bạn nên có các phương pháp riêng để tải tệp. –

+0

vâng, tôi hiểu điều đó. Tôi có nên đưa ra một câu hỏi khác cho điều đó không? – chepukha

2

Bạn có thể sử dụng Runtime để thực hiện và kịch bản và cũng có một số người xem Java PDF trên mạng (ví dụ Icepdf, JPedal, PDFRenderer).

+0

Cảm ơn các đề xuất ...;) –

+0

Cảm ơn bạn lần nữa, giống như ICEpdf phù hợp với mô hình cấp phép tôi cần. – Kingsolmn

0

Sử dụng này để mở file pdf sử dụng 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); 
} 

Mã này được sử dụng để mở pdf của bạn và các tập tin khác.

+2

Giải pháp này hoạt động tốt trên Windows, nhưng không phải là nền tảng độc lập mà là những gì OP hỏi. – THelper

-3

Sử dụng mã này để mở một tập tin cụ thể:

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

giải pháp Michael Meyer đã không hoàn toàn công việc cho tôi. Cụ thể, một đường dẫn có dấu cách không thành công với IllegalArgumentException thay vì một IOException.

Đây là những gì làm việc cho tôi:

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); 
     } 
    } 
Các vấn đề liên quan