JavaFX Apache pdfbox在窗格中查看PDDocument

JavaFX Apache pdfbox在窗格中查看PDDocument,javafx,pdfbox,Javafx,Pdfbox,我在javaFx应用程序中使用apachepdfbox,在这里我正在阅读一个pdf文档,现在我想在我的FXML中的一个窗格中显示一个org.apache.pdfbox.pdmodel.PDDocument。到目前为止,我尝试了org.apache.pdfbox.PDFReader,但它使用的是自己的Jframe。我想在窗格中显示它 这里是我到目前为止所做的 public class CustomPDFReader extends PDFReader { public CustomPDFR

我在javaFx应用程序中使用apachepdfbox,在这里我正在阅读一个pdf文档,现在我想在我的
FXML
中的一个窗格中显示一个
org.apache.pdfbox.pdmodel.PDDocument
。到目前为止,我尝试了
org.apache.pdfbox.PDFReader
,但它使用的是自己的
Jframe
。我想在窗格中显示它

这里是我到目前为止所做的

public class CustomPDFReader extends PDFReader {
    public CustomPDFReader(BillModel bm) {
        super();
        showAllPages(bm.getAllPages());
        setVisible(true);
    }

    private void showAllPages(List<PDPage> pagesList) {
        try {
            Field documentPanel = getClass().getSuperclass().getDeclaredField("documentPanel");
            documentPanel.setAccessible(true);
            JPanel panel = (JPanel) documentPanel.get(this);
            GridLayout layout = new GridLayout(0, 1);
            panel.setLayout(layout);
            for(PDPage page : pagesList) {
                PageWrapper wrapper = new PageWrapper(this);
                wrapper.displayPage(page);
                panel.add(wrapper.getPanel());
            }
            pack();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

}
公共类CustomPDFReader扩展PDFReader{
公共定制PDF阅读器(BillModel bm){
超级();
showAllPages(bm.getAllPages());
setVisible(真);
}
私有void显示所有页面(列表页面列表){
试一试{
字段documentPanel=getClass().getSuperclass().getDeclaredField(“documentPanel”);
documentPanel.setAccessible(true);
JPanel panel=(JPanel)documentPanel.get(this);
GridLayout=新的GridLayout(0,1);
面板设置布局(布局);
用于(PDPage:pagesList){
PageWrapper=新的PageWrapper(此);
包装器。显示页面(第页);
panel.add(wrapper.getPanel());
}
包装();
}捕获(例外e){
e、 printStackTrace();
}
}
}

从页面创建图像是最简单的选择。看见您也可以使用
PDFRenderer
通过
Graphics2D
输出结果,您可以扩展它,通过其他节点类型创建输出。是的,我也考虑过,但我想知道除了将pdf显示为图像之外,是否还有其他方法。
Graphics2D
接收不同类型的绘图操作。您应该能够基于这些操作生成场景。不过,这需要做很多工作。我非常确定目前pdfbox中没有内置对javafx的支持,所以这两个选项可能是您将获得的最佳选项,但其他人可能会证明我错了。。。