我尝试使用以下命令在我的 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/java 执行它,which java 插入了 pf java 命令。
3)我还尝试使用 putty 使用终端以 root 身份执行此命令,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) 也可能会解决该问题。
关于java - batik-rasterizer.jar - 将 svg 转换为 png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094131/