用node生成svg图片

摘要:
后端node的模拟浏览器的的复杂展现中间可能有各种问题,碰到最麻烦的是不能调试,难以找到原因。对于这个项目来说,可以考虑使用phantomjs解决

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

环境:

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

linux:gcc,python 2.6+

node版本:v0.10.35

node组件:express@3.18.6jsdom@3.1.2rsvg@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],//不加这个显示不出来
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图片》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇egg.js的egg-jwt生成token做成中间件vue项目----购物车商品的删除下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nodejs面试题

1、为什么用Nodejs,它有哪些缺点? 事件驱动,通过闭包很容易实现客户端的生命活期。 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 当然Nodejs也有一些缺点: nodejs更新很快,可能会出现版本兼容 nodejs还不算成熟,还没有大制作 nodejs不像其他的服务器,对于不同的链接,...

[Vuejs] svg-sprite-loader实现加载svg自定义组件

1、安装 svg-sprite-loader npm install svg-sprite-loader -D 或者 npm install svg-sprite-loader --save-dev 2、将所有svg图片放到assets/svg下,以此为例,修改文件 build/webpack.base.conf.js 找到代码: { test: /....

在 Node.js 中引入模块:你所需要知道的一切都在这里

本文作者:Jacob Beltran 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58eaf471a58c240ae35bb8e3 英文连接:Requiring modules in Node.js: Everything you need to know Node 中有两个...

NodeJS、NPM安装配置与测试步骤(windows版本)

1、windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的“INSTALL”按钮,直接点击就会自动下载安装了。 2、安装过程基本直接“NEXT”就可以了。(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是...

node爬虫之gbk网页中文乱码解决方案

之前在用 node 做爬虫时碰到的中文乱码问题一直没有解决,今天整理下备忘。(PS:网上一些解决方案都已经不行了) 中文乱码具体是指用 node 请求 gbk 编码的网页,无法正确获取网页中的中文(需要转码),"gbk" 和 "网页中的中文" 两个条件是缺一不可的。可以获取 utf-8 编码的网页中的中文,也可以获取 gbk 编码网页中的英文数字等。 举个...

教你使用docker部署淘宝rap2服务

什么是rap2 先来说说起因,在上一个星期的分享会上,谈到前后端联调上,有同事提到了rap2,特意去了解了一下,觉得使用这个东西来进行前后端的接口联调来真是太方便了,对比我们之前公司内部开发的API Cloud来说,我更偏向使用rap2。 RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确...