将SVG转换为png


batik-rasterizer.jar - convert svg to png

我尝试在我的linux服务器上设置一个导出服务器,使用以下命令从Highcharts下载图形作为图像。

$command = "java -jar batik-rasterizer.jar -m image/png -d temp/1a6b5dd08ec607454b81f91097fb24a6.png temp/1a6b5dd08ec607454b81f91097fb24a6.svg 2>&1 "; 
$output = shell_exec($command);
echo "Command: $command <br>";
echo "Output: $output";

它在我的本地windows机器上完美地创建了一个映像,但是我把它上传到我的linux服务器上,我得到了错误。

 About to transcode 1 SVG file(s) Converting 1a6b5dd08ec607454b81f91097fb24a6.svg to temp/1a6b5dd08ec607454b81f91097fb24a6.png ... (.:21519): Gtk-WARNING **: cannot open display:

为什么会这样?

并且我注意到创建了一个0 kb的无效图像

注意:我还尝试了以下方法

1)包含batik-rasterizer.jar的文件夹,文件所有者为root,权限设置为777。

2)我也试着用/user/bin/javawhich java代替pf java命令来执行它。

3)我也尝试以root身份使用终端使用putty执行此命令,Java安装在我的服务器上。

使用-Djava.awt.headless=true命令行选项执行java:

$command = "java -Djava.awt.headless=true -jar batik-rasterizer.jar -m image/png -d temp/out.png temp/in.svg 2>&1 "; 

如果传递额外的命令行选项仍然不能产生预期的结果,请检查Java版本。将JRE更新到最新版本(1.7)也可能解决此问题。