【问题标题】:HighCharts Export Server not creating imageHighCharts 导出服务器未创建图像
【发布时间】:2013-08-30 16:02:09
【问题描述】:

我已经安装了 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

【问题讨论】:

    标签: highcharts phantomjs


    【解决方案1】:

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

    Java highcharts 导出服务器通过async 参数实现了上述操作。

    阅读更多here

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢 Gert 的回复 - 但主要问题是,当我将脚本作为网络服务器运行时,我没有返回图像,这仅在我运行 curl 帖子时发生。最后,我想发一个在服务器上创建文件的帖子,现在我很乐意在我从浏览器发帖时返回图片,谢谢
      【解决方案3】:

      我选择了 php/batik 解决方案,但我仍然希望在未来使用这个解决方案。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多