1

我正在使用 Batik 将 SVG 图像转换为 PDF。当通过终端转换它们时,一切都很好,文件也被转换了。但是,我想要的是使用 exec() 从 PHP 动态转换它。

这是我从终端转换时看到的:

About to convert 1 SVG file(s)

Converting output.svg to /opt/lampp/htdocs/tool/generated/output.pdf...

... success

使用 exec() 时,输出仅限于 'Converting output.svg... Etc' 而没有 ...success 部分。好像服务器不会等待脚本完成。此外,生成的 PDF 文件是完全空的。

这是 PHP 中的调用:

$command = 'cd ~/Downloads/batik-1.7 && java -jar batik-rasterizer.jar /opt/lampp/htdocs/tool/generated/output.svg -m "application/pdf"';

$string = exec($command);

echo '{"success": true, "message": "Design saved as generated/output.svg' . $string . '"}';`

这是我在 js 控制台中看到的:

Design saved as generated/output.svgConverting output.svg to /opt/lampp/htdocs/tool/generated/output.pdf ...

编辑:

使用 stderr 我得到了:

No protocol specified Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.

编辑2:

经过一番谷歌搜索后,我找到了解决方案:

-Djava.awt.headless=true:)

感谢大家指导我找到答案!

4

1 回答 1

0

了解标准流 stdout 和 stderr。

于 2011-04-12T09:03:55.190 回答