将JavaScript图形和图表转换为图像

时间:2012-08-21 21:57:51

标签: javascript linux wkhtmltoimage

有许多JavaScript插件可用于绘制图表和图形。有关示例,请参阅http://www.queness.com/post/10781/13-chart-and-graph-plotting-javascript-plugins

我想创建一个图表并将其转换为图像。我已尝试使用http://code.google.com/p/wkhtmltopdf/将它们转换为PDF,并且效果很好。为了安装,我使用了http://www.amberdms.com/?cms=opensource_linux_repositories

现在,转换为图片。我安装了姐妹产品wkhtmltoimage。 amberdms在他们的回购中没有这个,所以我只使用了静态二进制文件。它隐藏了没有图表的简单页面,但在尝试使用图表的页面时,它不包含图像中的JavaScript图表,并且我收到以下错误:

[root@localhost ~]# /usr/bin/wkhtmltoimage-amd64 --load-error-handling ignore http://www.bobo.com/lib/plugins/jqPlot/examples/area.html var/www/html/images/example_amd64.jpg
Loading page (1/2)
QPixmap: Cannot create a QPixmap when no GUI is being used   ] 86%
....
QPixmap: Cannot create a QPixmap when no GUI is being used
Rendering (2/2)
Error: Could not write to output file
Segmentation fault
[root@localhost ~]#

有人有任何建议吗?

PS。我正在运行Centos 5.8 86x64,并尝试了wkhtmltoimage-i386和wkhtmltoimage-amd64。

有人有任何建议吗?

谢谢

2 个答案:

答案 0 :(得分:2)

我在我正在工作的项目上有相同的经验,根据您的主机设置,我找到了两个解决方案:

1.使用像这样的'use-xserver'参数

    $ ./wkhtmltoimage-amd64 --use-xserver input.html output.jpg
    Loading page (1/2)
    Rendering (2/2)                                                    
    Done

这就像我的开发机器上的魅力一样,但是我的托管服务提供商不允许我使用该选项,所以我不得不在谷歌代码库中挖掘出能够引导我进入下一个解决方案的答案。

2.使用已弃用的静态版本64 bit32 bit

出于某种原因,似乎有0.18版本的xserver依赖,所以我使用了弃用的下载部分提供的旧版本,在这种情况下,0.10.0_rc2对我的项目很有用。

使用此选项不需要use-xserver参数:

    $ ./wkhtmltoimage-amd64 input.html output.jpg
    Loading page (1/2)
    Rendering (2/2)                                                    
    Done

我希望这些选项对您有用。

答案 1 :(得分:0)

另一种选择是使用xvfb将wkhtmltoimage命令包装在X服务器实例中。

sudo apt-get install xvfb
xvfb-run --server-args="-screen 0, 1280x1024x24" wkhtmltopdf --use-xserver --javascript-delay 3000 your-html-file.html test.pdf

有关更详细的信息,请查看:http://blog.hugerepo.com/2013/04/28/what-is-the-qpixma/