我正在尝试使用KnpSnappyBundle从树枝模板创建PDF文件。
我已按照此post安装wkhtmltopdf
,我可以这样做:
wkhtmltopdf http://www.google.com test.pdf
但是当我尝试从控制器创建PDF文件时:
$this->get('knp_snappy.pdf')->generateFromHtml(
$this->renderView('AcmePDFBundle:Default:template.html.twig'),
'../app/var/PDFfiles/PDF.pdf'
);
我收到了这个错误:
request.CRITICAL: RuntimeException: The exit status code '1' says something went wrong:
stderr: "wkhtmltopdf: cannot connect to X server
"
stdout: ""
command: /usr/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy532ca2272fba44.73835084.html' '../app/var/files/PDF.pdf'. (uncaught exception) at /home/me/MyServer/project/vendor/knplabs/knp-snappy/src/Knp/Snappy/AbstractGenerator.php line 304 [] []
如何解决它?
这是我对KnpSnappyBundle的配置:
knp_snappy:
pdf:
enabled: true
binary: /usr/bin/wkhtmltopdf
options: []
image:
enabled: false
binary: /usr/bin/wkhtmltoimage
options: []
答案 0 :(得分:4)
已解决安装预编译版本的问题。现在你可以从这里获得你的版本(灵感来自this过时答案):
http://wkhtmltopdf.org/downloads.html
并将我的config.yml
更改为:
knp_snappy:
pdf:
enabled: true
binary: /usr/local/bin/wkhtmltopdf
options: []
image:
enabled: false
binary: /usr/local/bin/wkhtmltoimage
options: []
现在它有效!
答案 1 :(得分:0)
您必须将其复制到目录: / usr / local / bin ,使其成为可执行文件,并添加 wkhtmltopdf.sh 的符号链接,例如:
1-命令:
sudo apt-get install wkhtmltopdf
2-将二进制文件插入目录 / usr / bin 中,以便浏览器没有权限在该目录中执行。 您必须将 wkhtmltopdf.sh 复制到目录 / usr / local / bin ,以使浏览器对该目录具有权限,例如:
sudo cp /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf.sh
3-使二进制文件具有执行权限,如:
sudo chmod a+x /usr/local/bin/wkhtmltopdf.sh
4-现在可以测试了,它的工作方式如下:
/usr/local/bin/wkhtmltopdf.sh http://www.google.com google.pdf
它会在您终端的当前目录中下载pdf
5-可选 现在您可以在目录 / usr / local / bin 中添加符号链接,例如
ln -s /usr/local/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf
6-复制到 / usr / bin / wkhtmltoimage 到 / usr / local / bin / wkhtmltoimage 中,例如:
sudo cp usr/local/wkhtmltoimage usr/local/bin/wkhtmltoimage
8-使它也是可执行的:
sudo chmod a+x /usr/local/bin/wkhtmltoimage
7-在 config / packages / knp_snappy.yaml 中更改symfony配置中的二进制目录:
knp_snappy:
pdf:
enabled: true
binary: /usr/local/bin/wkhtmltopdf
options: []
image:
enabled: false
binary: /usr/local/bin/wkhtmltoimage
options: []
希望对您有帮助