Есть ли способ иметь код, который открывает файл PDF в приложении Java на платформе независимо? Я имею в виду, что использование пакетного файла в Windows может это сделать. Есть ли другой способ иметь независимый от платформы код для открытия файлов PDF на лету?
Открыть PDF файл "на лету" из приложения Java
Ответ 1
Я бы попробовал Desktop.open(File)
, который:
Запускает связанное приложение для открытия файла.
Итак, этот код должен сделать трюк:
if (Desktop.isDesktopSupported()) {
try {
File myFile = new File("/path/to/file.pdf");
Desktop.getDesktop().open(myFile);
} catch (IOException ex) {
// no application registered for PDFs
}
}
Ответ 2
Вы можете использовать Runtime для выполнения и script, а также есть несколько читателей Java PDF (например, Icepdf, JPedal, PDFRenderer).
Ответ 3
Решение Майкла Майера не совсем сработало для меня. В частности, путь с пробелами выходит из строя с исключением IllegalArgumentException, а не с исключением IOException.
Вот что работает для меня:
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);
}
}
Ответ 4
Используйте это, чтобы открыть pdf файл с помощью 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);
}
Этот код используется для открытия вашего PDF файла и других файлов.
Ответ 5
Используйте этот код для открытия определенного файла:
String cmds[] = new String[] {"cmd", "/c", "C:\\Users\\PC\\Desktop\\EA01.pdf"};
try {
Runtime.getRuntime().exec(cmds);
}