码迷,mamicode.com
首页 > 其他好文 > 详细

用node生成svg图片

时间:2015-06-16 22:31:48      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

最近有个需求需要后台调统计数据,直接生成图片吐到前端,本来以为比较简单的,结果中间还是遇到了很多问题:

 环境:

windows:python 2.6+,visual stdio 2008 express开发包

linux:gcc,python 2.6+ 

node版本:v0.10.35

node组件:express@3.18.6 jsdom@3.1.2 rsvg@0.2.2

本来想把node升到最新版本,在安装jsdom的时候报错,只能回退

jsdom@3支持node,更高版本只支持iojs

rsvg@0.2.5 在Red Hat 4.4.7上安装报错,rsvg@0.2.2安装成功

请求数据:

发httppost请求接口数据:

配置请求的header中Content-Length参数注意等于post数据的长度,原来没注意导致请求超时

注意header中Accept-Encoding参数是否配置了gzip,如果配置了gzip,返回时需要用zlib解压

highchart生成svg:

 最大的问题是在浏览器可以生成svg,搬到node后不能生成,经过google,参数不断的排除,发现在highchart配置一定要增加下面几个:

chart: {
margin: [50, 30, 70, 50],//不加这个显示不出来
width: 1000,
forExport: true//不加这个会报错
}

hightchart的版本使用的是v2.3.3,后台生成svg如果在图形上有标注,会显示不正常,使用最新版本会有改善。在本项目中发现使用rsvg转换png时,线宽异常,怀疑是rsvg版本太低导致的,在这个需求一定要使用rsvg转换,所以只能放弃使用最新版本的highchart

hightchart中datetime类型数据,需要加8个小时,保证显示正常,需要调整yAxis的x、y值,不然y坐标显示异常。

总结:node中模块开源,但是不同模块的版本兼容比较麻烦。后端node的模拟浏览器的的复杂展现中间可能有各种问题,碰到最麻烦的是不能调试,难以找到原因。

对于这个项目来说,可以考虑使用phantomjs解决

用node生成svg图片

标签:

原文地址:http://www.cnblogs.com/luke001/p/4580155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!