我正在使用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
:)
感谢所有人指导我找到答案!
答案 0 :(得分:0)
了解标准流stdout和stderr。