我安装了phantomjs(使用npm -g选项)并从github目录中复制了相关的高图文件。这是目录列表的样子 - 我chmod / chown'd一切都是大开的,以防出现问题
drwxrwxrwx 2 www-data www-data 4096 2013-08-30 15:01 ./
drwxr-xr-x 9 root root 4096 2013-08-29 18:11 ../
-rwxrwxrwx 1 www-data www-data 183 2013-08-30 13:43 callback.js*
-rwxrwxrwx 1 www-data www-data 4436 2013-08-30 13:34 data.js*
-rwxrwxrwx 1 www-data www-data 15464 2013-08-30 13:34 highcharts-convert.js*
-rwxrwxrwx 1 www-data www-data 139290 2013-08-30 13:34 highcharts.js*
-rwxrwxrwx 1 www-data www-data 21781 2013-08-30 13:34 highcharts-more.js*
-rwxrwxrwx 1 www-data www-data 173186 2013-08-30 13:34 highstock.js*
-rwxrwxrwx 1 www-data www-data 92629 2013-08-30 13:34 jquery.1.9.1.min.js*
-rwxrwxrwx 1 www-data www-data 223 2013-08-30 13:55 options1.json*
-rwxrwxrwx 1 www-data www-data 3249 2013-08-30 13:34 readme.md*
命令行按预期工作:
phantomjs highcharts-convert.js -infile options1.json -outfile chart1.png -scale 2.5 -width 300 -constr Chart -callback
创建chart1.png - 它看起来像我期望的那样。我可以使用此命令启动Web服务器
phantomjs highcharts-convert.js -host 0.0.0.0 -port 8080
好的,PhantomJS准备好了。
我创建了一个简短的js来发送帖子数据
var p ={"infile":"{xAxis: {categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']},series: [{data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]}]};","outfile":"test1.png","constr":"Chart"}
console.log('success');
data=JSON.stringify(p);
$.ajax({
type: 'POST',
data: data,
url: 'http://myip:8080',
success: function(data) {
console.log('success');
}
});
这将返回200代码,但不会向浏览器返回任何数据。我在highcharts-convert.js = console.log(msg)中取消注释第107行;
所以我得到了这个输出
Highcharts.options.parsed
Highcharts.customCode.parsed
Highcharts.images.loaded
但没有我能找到的图片。想法?
修改
Curl正在运作
curl -H "Content-Type: application/json" -X POST -d '{"infile":"{xAxis: {},series: [{data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]}]};","constr":"Chart","outfile":"/var/www/node/image/chart.png"}' 127.0.0.1:8080
除了我得到一个base64字符串而不是保存图像的脚本。我从这里得到了卷曲的部分:http://www.highcharts.com/component/content/article/2-news/56-improved-image-export-with-phantomjs
答案 0 :(得分:1)
PhantomJS可以制作图像并在本地保存,但不支持文件下载。这就是它返回图像的64字符串表示的原因。
答案 1 :(得分:1)
highcharts-convert.js脚本经历了一些变化。在servermode中运行脚本时指定outfile
参数时,将在服务器上创建一个文件。该脚本返回服务器上的文件位置。这可以发送给客户端,因此可以从客户端触发下载。
使用async
参数的Java highcharts export-server促进了上述内容。
了解更多here
我认为这可能是另一种解决方案
答案 2 :(得分:0)
我选择使用php / batik解决方案,我仍然希望将来能够使用此解决方案。
注意,下载到教程中列出的蜡染 http://xmlgraphics.apache.org/batik/#download http://xmlgraphics.apache.org/batik/download.cgi 导致403页,可能考虑在其他地方链接?我在页面上使用了谷歌缓存。