1

我们在 Web 应用程序中使用Highcharts JS。我们还使用“highcharts exporting”,以便我们的客户只需单击一下即可下载图表或饼图。

现在我想添加一个功能,您可以一键下载所有由 highcharts 显示的图表。这样我们的客户就不必单独下载每个图表。highcharts 中已经有这样的功能了吗?

4

2 回答 2

2

我找不到一个简单的方法来做到这一点。

highcharts导出模块正在向 highcharts 服务器提交 POST请求(传入图表的 SVG)以生成 PDF 或 PNG。

我尝试chart.exportChart()连续调用,但这不起作用,因为第一次调用更改了文档焦点,后续调用不会触发。所以我认为你有两个选择:

  1. 做服务器端。让您的 javascript 返回chart.getSVG()所有图表的 SVG (),并编写一个生成POST 请求的服务器端脚本,压缩生成的文件并在客户端返回它们。

  2. 留在客户端。获取图表对象的 SVG 并对其进行操作以在一个 SVG 文档中嵌入多个图表。然后向 highcharts 服务器发出请求。这样,您可以获得一个包含多个图表的 PDF 文档。

于 2012-12-16T15:51:24.493 回答
0

我会这样做:

  1. 使用 PhantomJS 的 hekp 设置您自己的导出服务器。(这是http://www.highcharts.com/articles/2-news/52-serverside-generated-charts的快捷方式)
  2. 通过 AJAX 将每个图表数据发送到 PhantomJS 导出服务。
  3. 将导出的 PNG 与服务器端脚本(php 或 py)或在 PhantomJS 的帮助下通过在一个页面中呈现所有内容,光栅化并导出为一个图像,并通过 AJAX 将其路径发送回前端。
  4. 接收图像并让用户下载它:)。

前两个步骤在我最近为 Packt 创建的教程视频中进行了详细说明:https ://www.packtpub.com/web-development/learning-highcharts-video

我希望它有所帮助。

于 2015-12-06T21:29:53.780 回答