2013-06-08 2 views
1

Я пишу приложение JavaFX, которое использует WebView для доступа к веб-сайту и извлечения данных со своих страниц. В какой-то момент я хочу щелкнуть ссылку, которая открывает новое окно, которое показывает файл PDF. С удачей поддержки PDF в JavaFX я думаю, что одним из возможных решений может быть чтение ответа HTTP для этого PDF-файла и создание PDF-формы двоичных данных.JavaFX - Создание pdf из двоичных данных

URL-адрес страницы PDF динамичен, поэтому у меня нет фактического имени файла, поэтому я не могу использовать сторонние инструменты для создания pdf-файла.

Любые мысли были бы высоко оценены.

Благодаря

ответ

1

Запуск качелях На основе PDF Viewer

Вот code extract с небольшой веб-браузер (назвал willow-browser) я писал в JavaFX:

webEngine.locationProperty().addListener(new ChangeListener<String>() { 
    @Override public void changed(ObservableValue<? extends String> observableValue, String oldLoc, String newLoc) { 
    if (newLoc.endsWith(".pdf")) { 
     try { 
     final PDFViewer pdfViewer = new PDFViewer(false); 
     pdfViewer.openFile(new URL(newLoc)); 
     } catch (Exception ex) { 
     // handle bad pdf url . . . most likely no action required 
     } 
    } 
    } 
} 

код делает использование стороннего разработчика PDF-просмотра Swing, который он запускает для загрузки URL-адреса. Поскольку просмотрщик Swing pdf работает в отдельном окне, вокруг него не было проблем с интеграцией Swing/JavaFX - он просто работал.

Чтобы получить его на работу, вы можете загрузить копию источника браузера ивы и построить его (образец двоичного файла, размещенного на сайте, не включает в себя средство просмотра PDF, только исходные сборки).

В идеале, код будет запрашивать тип содержимого http в дополнение к строке uri, чтобы определить, что файл является pdf, но для этого требуется небольшой доступ к сети низкого уровня, который трудно получить в случае WebView , Если вас не волнует то, что вы абсолютно точно определяете PDF-контент на многих сайтах, не имеет большого значения, если вы не используете тип контента для определения PDF-файлов.

Есть другие зрители в формате PDF, вокруг которых вы можете попробовать, если программа просмотра Swing pdf не предоставит вам необходимый вам опыт, например. jpedalfx или ICEpdf.

Запуск коренная PDF Viewer

При желании вы могли бы назвать HostServices.showDocument(uri) на Pdf URL и запуститься, чтобы открыть URL в локальном веб-браузере, некоторые из которых построены в Pdf зрителей или для просмотра pdf с помощью Acrobat-ридера.

Код, который требуется для определения URL-адреса для просмотра в формате PDF, является таким же, как в приведенном выше коде.

+0

Спасибо за быстрый ответ. Моя проблема заключается в том, что URL-адрес файла pdf является динамическим. Веб-страницы, к которым я обращаюсь, были построены с использованием страниц ADF Oracle. Чтобы отправить URL-адрес местному браузеру, мне нужно знать URL-адрес, который неизвестен, пока вы на самом деле не нажмете ссылку. Его даже не href тега a в html. Наконец, у экземпляра url в конце нет .pdf. Как вы думаете, ваше решение выше будет работать. В любом случае я попробую позже и отправлю результаты. –

+0

Это может оказаться трудным для вас, удачи. – jewelsea

+0

Спасибо, мне это нужно –

Смежные вопросы