在IE上打印jfreechart

时间:2017-07-10 12:36:48

标签: internet-explorer-11 jfreechart

我在Internet Explorer上打印了一个jfreechart,我得到了一个空白页面。 实际上,我的IE版本是11.0.9600.18697CO,11.0.43(KB4021558)。

我对旧版IE没有这个问题。

我在Chrome和Firefox上没有这个问题。

我的freechart是在服务器上生成的,由servlet在客户端显示并在服务器上删除(这是一次jfreechart)。

在IE的控制台调试中,当我执行window.print();有发送到服务器的requets。我认为它引起了问题(虽然http代码= 200)。

如果我不删除服务器上的图表,我没有问题。

有人遇到同样的问题?解? 非常感谢, 最好的问候

1 个答案:

答案 0 :(得分:1)

在使用ChartUtilities的servlet上下文中,请尝试使用相应的save…方法,而不是使用write…方法之一。

public void doGet(HttpServletRequest request, HttpServletResponse response) throws … {
    OutputStream out = response.getOutputStream();
    …
    //ChartUtilities.saveChartAsPNG(file, chart, …);
    ChartUtilities.writeChartAsPNG(out, chart, …);
}
  

你能解释一下原因吗?我正在使用ServletUtilities.saveChartAsPNG()

我猜测有一个竞争条件允许文件过早删除。如果您需要ChartRenderingInfo,相应的ChartUtilities方法可能会writeChartAsPNG()。如果无法切换,请使用DelayQueue<File>推迟删除临时文件。