【问题标题】:batik-rasterizer.jar - convert svg to pngbatik-rasterizer.jar - 将 svg 转换为 png
【发布时间】:2014-09-25 11:27:56
【问题描述】:

我尝试在我的 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 insted pf java 命令。

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

【问题讨论】:

    标签: java php linux svg exec


    【解决方案1】:

    使用-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) 也可能会解决此问题。

    【讨论】:

    • 感谢您的快速 rply。我试试 java -Djava.awt.headless=true -jar batik-rasterizer.jar -m image/png -d temp/ad7ebdfaabdbec04152c2e6decd3b40c.png temp/ad7ebdfaabdbec04152c2e6decd3b40c.svg 2 >&1 ,但是得到了相同的结果。
    • @Shin 你用的是什么版本? 1.7?
    • @Shin 好消息!
    • @Shin 我看到你的编辑被拒绝了,所以我自己更新了答案。
    • 无论如何,我接受了这个作为答案,我认为它会帮助面临同样问题的人。感谢您的帮助。 @Robby Cornelissen
    猜你喜欢
    • 2016-03-12
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2018-09-07
    • 1970-01-01
    • 2011-09-09
    • 2019-08-05
    相关资源
    最近更新 更多