Image JavaFX将场景导出为PDF/SVG

Image JavaFX将场景导出为PDF/SVG,image,pdf,svg,export,javafx-8,Image,Pdf,Svg,Export,Javafx 8,目前,我已经开发了一个最终开源的应用程序来分析表视图中的一些数据,并在一些额外的图中可视化生成的数据。这样做的一个问题是,生成的图可能对最终用户有用,例如用于演示、进一步的下游信息性讨论等。这就是我开始使用ImageWriter开发导出函数的原因 //adding a context menu item to the chart final MenuItem saveAsPng = new MenuItem("Save as png"); saveAsPng.setOnActio

目前,我已经开发了一个最终开源的应用程序来分析表视图中的一些数据,并在一些额外的图中可视化生成的数据。这样做的一个问题是,生成的图可能对最终用户有用,例如用于演示、进一步的下游信息性讨论等。这就是我开始使用ImageWriter开发导出函数的原因

//adding a context menu item to the chart
    final MenuItem saveAsPng = new MenuItem("Save as png");
    saveAsPng.setOnAction(new EventHandler<ActionEvent>() {
        @Override public void handle(ActionEvent event) {
            int scale = 6; //6x resolution should be enough, users should downscale if required
            final Bounds bounds = bc.getLayoutBounds();
            final SnapshotParameters spa = new SnapshotParameters();
            spa.setTransform(javafx.scene.transform.Transform.scale(scale, scale));
            ImageWriter imageWriter = new ImageWriter();
            try {
                imageWriter.saveImage(stage, bc.snapshot(spa, null));
            } catch (ImageException e) {
                e.printStackTrace();
            }
        }
    });
//向图表中添加上下文菜单项
final MenuItem saveAsPng=新MenuItem(“另存为png”);
saveAsPng.setOnAction(新的EventHandler(){
@重写公共无效句柄(ActionEvent事件){
int scale=6;//6x分辨率应该足够了,如果需要,用户应该缩小比例
final Bounds=bc.getLayoutBounds();
最终快照参数spa=新快照参数();
setTransform(javafx.scene.transform.transform.scale(scale,scale));
ImageWriter ImageWriter=新ImageWriter();
试一试{
saveImage(stage,bc.snapshot(spa,null));
}捕获(图像异常e){
e、 printStackTrace();
}
}
});
这成功地创建了一个大小足够的PNG文件,但我的理想解决方案是以基于矢量的格式导出,例如PDF/SVG。对于Swing应用程序,我知道如何实现这一点,但对于JFX,我无法真正找到解决这一问题的合适解决方案。我已经研究了几个潜在的想法,例如,使用打印机对话,然后通过虚拟打印机导出为PDF,但这也会导致PDF中出现位图


有什么想法吗

相关:@w3b1x,你对此有任何更新吗?嗨@schrieveslaach,没有,我找不到解决这个问题的有效方法,也没有找到任何人能够帮助解决这个问题。即使是在一次与Java专家的小型会议上,也没有人知道答案。似乎是一些没有真正完成的事情。。。可能有人必须为这个特殊的问题编写一个库。