• 用node生成svg图片


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

     环境:

    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],//不加这个显示不出来
    1000,
    forExport: true//不加这个会报错
    }

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

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

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

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

    
    
  • 相关阅读:
    用Python实现的数据结构与算法:双端队列
    用Python实现的数据结构与算法:队列
    用Python实现的数据结构与算法:堆栈
    用Python实现的数据结构与算法:开篇
    用Markdown写博客
    一个简单的web.py论坛
    在OpenShift上托管web.py应用
    SQLite中的自增关键字:AUTO_INCREMENT、INTEGER PRIMARY KEY与AUTOINCREMENT
    【读书笔记】《HTTP权威指南》:Web Hosting
    【读书笔记】《HTTP权威指南》:Web Robots
  • 原文地址:https://www.cnblogs.com/luke001/p/4580155.html
Copyright © 2020-2023  润新知