JavaFX-从二进制数据创建pdf

JavaFX-从二进制数据创建pdf,pdf,javafx,binary-data,Pdf,Javafx,Binary Data,我正在编写一个JavaFX应用程序,它使用WebView访问网站并从其页面提取数据。在某个时候,我想点击一个链接,打开一个显示PDF文件的新窗口。幸运的是JavaFX中支持PDF,我认为一个可能的解决方案可能是读取该PDF的http响应,并从二进制数据中创建PDF格式 PDF页面的url是动态的,因此我没有文件的实际名称,因此我无法使用第三方工具生成PDF 任何想法都将不胜感激 谢谢启动基于Swing的PDF查看器 下面是我在JavaFX中编写的一个小型web浏览器(名为)的示例: webEng

我正在编写一个JavaFX应用程序,它使用WebView访问网站并从其页面提取数据。在某个时候,我想点击一个链接,打开一个显示PDF文件的新窗口。幸运的是JavaFX中支持PDF,我认为一个可能的解决方案可能是读取该PDF的http响应,并从二进制数据中创建PDF格式

PDF页面的url是动态的,因此我没有文件的实际名称,因此我无法使用第三方工具生成PDF

任何想法都将不胜感激


谢谢启动基于Swing的PDF查看器

下面是我在JavaFX中编写的一个小型web浏览器(名为)的示例:

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
      }
    }
  }
}
webEngine.locationProperty().addListener(新的ChangeListener()){

@覆盖公共无效已更改(ObservalEvalue启动基于Swing的PDF查看器

下面是我在JavaFX中编写的一个小型web浏览器(名为)的示例:

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
      }
    }
  }
}
webEngine.locationProperty().addListener(新的ChangeListener()){

@覆盖公共无效已更改(Observalevalue感谢您的快速回复。我的问题是pdf的url是动态的。我正在访问的网页是使用Oracle的ADF页面创建的。为了将url发送到本地浏览器,我需要知道url,直到您实际按下链接为止。它甚至不是html中a标记的href。最后是actu所有url最后都没有.pdf。您认为您的上述解决方案是否可行。无论如何,我稍后会尝试一下并将结果发回。感谢您的快速回复。我的问题是pdf的url是动态的。我访问的网页是使用Oracle的ADF页面创建的。为了将url发送到本地浏览器,我需要知道url,直到你真正按下链接才知道。它甚至不是html中a标记的href。最后,实际url的结尾没有.pdf。你认为你的上述解决方案会起作用吗。无论如何,我稍后会尝试一下,并将结果发回。