2013-08-04 5 views
2

Чтобы объяснить, что я пытаюсь сделать, я создаю приложение, которое будет использовать Swing и некоторые другие библиотеки обрабатывать кучу PDF-файлов на основе информации, которую пользователь дает. Это действительно не важно для того, что я пытаюсь сделать здесь, но я решил, что обзор будет приятным.Отображение PDF внутри Java JFrame/JPanel или по крайней мере изображение страниц любым способом

Что я хочу сделать, это отобразить PDF внутри Jframe/Jpanel или другого компонента качания, чтобы пользователь мог ПРОЧИТАТЬ сам PDF. PDF-файлы, которые они будут читать, содержат информацию о датах и ​​других вещах, которые мне понадобятся для ввода моей программы.

Я могу сделать все для моей программы до сих пор, кроме того, что у вас есть достойный способ связать PDF с информацией. Мой альтернативный подход состоял в том, чтобы вообще не отображать PDF-файл и просто показывать имя файла и иметь поля для ввода информации, таким образом, они смогут читать PDF-файлы из чего-то вроде Adobe Reader и просто отправлять его туда. Я не хочу этого делать, потому что люди, которые будут использовать эту программу, немного старше и склонны к ошибке. Им нужно следить за именами PDF, а не просто видеть изображение в формате PDF для них слишком много.

TL; DR - Необходимо отображать PDF или изображения страниц PDF в компоненте Swing.

ответ

1

Самый простой способ, которым я знаю, это загрузить браузер в приложение Swing с помощью DJ Native Swing. Затем дайте PDF в браузер и дайте ему все остальное.

Вот как поставить браузер на JFrame:

NativeInterface.open(); 
    Runnable runnable = new Runnable() { 
     public void run() { 
      JFrame frame = new JFrame(); 
      JPanel panel = new JPanel(); 
      frame.setContentPane(panel); 
      JWebBrowser browser = new JWebBrowser(); 
      browser.setBarsVisible(false); 
      browser.setStatusBarVisible(false); 
      browser.setPreferredSize(new Dimension(800,600)); 
      panel.add(browser); 
      browser.navigate("http://www.cran.r-project.org/doc/manuals/R-intro.pdf"); 
      frame.pack(); 
      frame.setVisible(true); 
     } 
    }; 
    SwingUtilities.invokeAndWait(runnable); 

Это решение не очень компактен, хотя.

+0

Когда я пытаюсь это сделать, он открывает экземпляр Internet Explorer, который затем открывает PDF-файл с моим локальным Adobe Reader, а не в браузере. Есть ли способ исправить это? – user2473153

+1

Всё зависит от меня. Используете ли вы 64-разрядную JRE для запуска приложения? Если это так, то вот в чем проблема. После нажатия ссылки на ссылку на PDF 64-разрядный IE всегда будет охватывать новое окно Adobe, чтобы отобразить pdf. 32-разрядный IE отобразит pdf, встроенный в браузер. Чтобы заставить DJ Native Swing использовать 32-битный IE, вы можете переключиться на 32-разрядную JRE. – Jk1

+0

Спасибо, я постараюсь сделать это. – user2473153