Image JavaFX将场景导出为PDF/SVG
目前,我已经开发了一个最终开源的应用程序来分析表视图中的一些数据,并在一些额外的图中可视化生成的数据。这样做的一个问题是,生成的图可能对最终用户有用,例如用于演示、进一步的下游信息性讨论等。这就是我开始使用ImageWriter开发导出函数的原因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
//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专家的小型会议上,也没有人知道答案。似乎是一些没有真正完成的事情。。。可能有人必须为这个特殊的问题编写一个库。