Highcharts使用phantomjs导出图片

Highcharts使用phantomjs导出图片

?Highcharts使用phantomjs导出图片

描述

在用Highcharts这个强大的图标组件时,你一定在某些时刻想把画出来的图标导出为一个图片并下载到本地。Highcharts本身提供了导出功能,只需要导入exporting.js文件,就可以在图表右上角找到导出按钮了。这已经基本满足的大多数情况我们的需求。但是这原始到导出是发送请求到Highcharts的服务器上进行转化的,很多时候我们并不想把我们的数据信息暴露给他们,所以我们必须在我们自己的服务器上完成转化的服务。

步骤一:phantomjs

Highcharts的下载文件中有个exporting-server文件夹,里面是Highcharts提供的一系列转换方案,有java,phantomjs和php的。在这里,只讲述nodejs+phantomjs的方案。

什么是phantomjs?

phantomjs可以看做是一个不带gui的浏览器,他的内核也是webkit,我们一般用它来加载网页去解析dom并获取数据,或者是利用他来对网页进行截图。下载完phantomjs并解压后,将exporting-server文件夹中的phantomjs文件夹拷贝到解压后的根目录下。并执行命令

1
phantomjs ./phantomjs/highcharts-convert.js -host 127.0.0.1 -port 3003

执行上面的代码后,会开启一个服务器并监听3003端口。这个服务器用来接收我们发送的图表数据,并最终将生成的图片路径放回给我们。

步骤二:获取svg数据并发送给nodejs Server端

浏览器端代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
var obj = {

infile:$(‘#container‘).highcharts().getSVG(),

constr:"Chart", //图表类型

outfile:"E://chart.png" //需要存储的文件路径

};

$.ajax({

url: "http://localhost:3000/highchartsConvert",

type: ‘POST‘,

dataType: ‘json‘,

data: {

data:JSON.stringify(obj)

}

}).done(function(rData){

download(rData);  //rData为返回的图片路径,如果转换成功的话,跟outfile的值一样

//download方法为将文件名或路径传递到后台,然后nodejs实现文件下载功能,这里省略

});

nodejs端:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
app.post("/highchartsConvert",function(req,res,next){

var reqData = JSON.parse(req.body.data);

//发送到phantomjs转换服务器

var options = {

hostname: "localhost",

port: "3001",

path:"",

method: "POST",

headers: {

"Content-Type": ‘application/json;charset=utf-8‘,

"Content-Length":reqData.length

}

};

var req = http.request(options,function(ress){

ress.on(‘data‘,function(data){

res.send(data);

});

});

req.write(reqData+"\n");

req.end();

});

总结

整个转换过程走了两个服务器,首先将图表数据发送到nodejs端,然后再转发到phantomjs的服务器。中间用node中转一下是因为要进行某些验证。

下面是可以传的参数列表:

  • infile:图表的svg代码或者options
  • outfile:输出图片的路径+文件名
  • constr:图表类型
  • width:图表在phantomjs中渲染的宽度
  • height:图表在phantomjs中渲染的高度
  • callback:图表在phantomjs中渲染完成后执行

更多信息请参考

RENDER
CHARTS ON THE SERVER

IMPROVED
IMAGE EXPORT WITH PHANTOMJS

文章作者:foreverpx

文章原文链接:Highcharts使用phantomjs导出图片

时间: 2024-10-18 22:36:56

Highcharts使用phantomjs导出图片的相关文章

Highcharts导出图片

概述: Highcharts是在做项目涉及到统计图的时候大家的首选,同时也会用到highcharts的export功能,将统计图导出为图片,刚好,最近也遇到了这样的事情,总结出来,以备后用. 导出方式: highcharts导出图片实现有三种:highcharts服务器导出.局域网服务器导出.本地后台导出. 首先,highcharts服务器导出是默认的导出方式,不需要任何操作,只需在chart中配置export参数即可,但是这种导出方式需要联网: 其次,局域网服务器导出,需要在局域网内配置导出的

Highcharts 本地导出图片 Java

下载的 Highcharts-2.3.5.zip 解压后 有 E:\Highcharts\Highcharts-2.3.5\exporting-server\java 目录 提供了Java实现的导出应用. 1)安装maven,配置环境变量. (http://maven.apache.org/download.cgi)  1.jdk 我装的是E:\java\jdk\jdk1.6.0_02-windows.exe  2.我的电脑-----属性----高级-----环境变量-----环境变量-----

highcharts 导出图片 .net Demo

highcharts 的Net导出服务  GitHub上整理的https://github.com/imclem/Highcharts-export-module-asp.net 引用两个程序集 sharpPDF.dll,Svg.dll (实际上就是将svg转化成其他格式的图片) 两种导出情况:   1.只需要图片,修改自带导出按钮的请求路径路径就行2.需要插入到word等二次处理再导出时 页面: @{ ViewBag.Title = "Index"; } @section css{

hightchart导出图片

通常在使用highchart导出图片pdf等文件时,我们一般直接引入exporting.js即可 执行导出操作则会直接请求highchart服务器,执行生成图片等操作,然后下载到客户端: 但这一切的操作可执行的前提,必须用户使用的pc客户端连接到外网上,否则无法执行下载操作. 我们必须通过自定义的模式,来实现转换.生成图片pdf等操作. 查询hightchart官网,highchart官网提供了三三种服务端模式,java,php 以及phantomjs(+node),针对我们asp.net程序,

highcharts 结合phantomjs纯后台生成图片系列二之php2

上篇文章中介绍了phantomjs的使用场景,方法. 本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片.包含一步步详细的php代码 一.highcharts 结合phantomjs纯后台生成图片系列的准备: 下载phantomjs解析插件,从highcharts官方下载所需插件. 新建一个工程文件夹phantomjs,所必备的js文件有: highcharts 结合phantomjs纯后台生成图片系列二之php 其中jquery.js为 v1.7.1; hi

highcharts 结合phantomjs纯后台生成图片系列二之php

上篇文章中介绍了phantomjs的使用场景,方法.本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片. 一.准备: 下载phantomjs解析插件,从 highcharts官方 下载所需插件. 新建一个工程文件夹名位:phantomjs,所必备的js文件有: 其中jquery.js为v1.7.1; highcharts-convert.js的下载地址可去 github上下载 . highcharts官方文档有关于highcharts-convert.js的使

关于highcharts的中文导出问题

之前做的一个项目中为了展示数据使用到了highcharts,默认使用的是highcharts自己的导出服务,后来客户说那边的服务端不可访问外网,没办法只好自己实现报表导出的服务了,导出服务的代码就不贴了,网上一搜大把大把的.下面主要说说遇到的一个问题:导出时中文乱码的问题! 乱码的情况 如图: 报表的中文title全部变成了方框.最开始以为是前后编码不一致导致的,前前后后检查了一遍发现都是utf-8的编码方式,说明编码没问题.后来将前段发送的svg数据直接拷到导出服务里写死,打成war包放到本地

highchart本地化导出图片

由于项目运行在内容,而且本身自带的功能是想highcharts  服务器写文件然后再下载的,所以 highchart本地化导出图片 就很需要. 第一步修改export.js 里的URl 在在exporting.js中放心的将http://export.highcharts.com/改为我们自己的地址了,我这里改为了http://192.168.0.32:8080/highchart-export/export这个地址:然后就可以在图表中显示我们自己的地址了,如下图所示: 第二步修改参数 在网上找

keynote如何无损导出图片?怎么把图片导出来

在做工作汇报的时候,keynote是我们经常使用的工具,里面会有很多我们用的上的图片素材,那么keynote如何无损导出图片?如何在不丢失画质的情况导出这些图片呢,小编总结了具体的步骤,可以帮您完成这个问题,如果你get了就可以快速导出他们了哦!下面看看具体是如何操作的吧! keynote无损导出图片步骤: 第一步:选中图片 第二步:选择"格式"-"图像" 第三步:在右侧属性栏右上角的位置,将会出现"文件信息",里面包含了这张图片的jpeg图标以