2

我已经安装了 phantomjs(使用 npm -g 选项)并从 github 目录中复制了相关的 highchart 文件。这是目录列表的样子 - 我 chmod/chown 将所有内容都打开,以防万一出现问题

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 - 它看起来像我所期望的。我可以使用此命令启动网络服务器

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 -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

4

3 回答 3

1

PhantomJS 可以制作图片并保存在本地,但不支持文件下载。这就是它返回图像的 64 字符串表示的原因。

于 2013-09-02T11:57:06.030 回答
1

highcharts-convert.js 脚本发生了一些变化。在服务器模式下运行脚本时指定outfile参数时,将在服务器上创建一个文件。该脚本返回服务器上的文件位置。这可以发送到客户端,因此可以从客户端触发下载。

async带有参数的 Java highcharts export-server 促进了上述操作。

在这里阅读更多

我认为这可能是一个替代解决方案

于 2013-09-26T19:25:30.780 回答
0

我改用了 php/batik 解决方案,我仍然希望将来让这个解决方案正常工作。

注意,教程http://xmlgraphics.apache.org/batik/#download http://xmlgraphics.apache.org/batik/download.cgi中列出的 batik 下载会导致 403 页面,可能考虑链接到其他地方? 我为页面使用了谷歌缓存。

于 2013-09-06T13:00:29.080 回答