我在 knpSnappyBundle 上遇到此错误,我正在尝试生成 pdf,然后通过电子邮件发送。
我的配置如下:
knp_snappy:
pdf:
enabled: true
binary: \vendor\h4cc\bin\wkhtmltopdf-amd64\bin\wkhtmltopdf-amd64
options: []
然后是我的控制器:
$html = $this->render('AppUserBundle:Emails:envoi-export.html.twig', [
'pointagesList' => $pointagesList,
'user' => $user,
'date' => new \DateTime()
]);
$filename = sprintf('test-%s.pdf', date('Y-m-d'));
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('attachment; filename="%s"', $filename),
]
);
完整错误消息:
退出状态代码“127”表示出现问题: stderr: "sh: 1: /usr/local/bin/wkhtmltopdf: 未找到 ” 标准输出:“” 命令: /usr/local/bin/wkhtmltopdf --lowquality '/tmp/knp_snappy57970542debe22.97700913.html' '/tmp/knp_snappy57970542dec563.25042325.pdf'.
我解决了问题,它的发生是因为系统没有安装
wkhtmltopdf
插件。
请点击链接安装此插件:-
适用于 Mac 操作系统
https://formulae.brew.sh/cask/wkhtmltopdf
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
适用于 Linux 操作系统
https://computingforgeeks.com/install-wkhtmltopdf-on-ubuntu-debian-linux/
sudo ln -s /usr/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
希望这对未来的努力有所帮助。
“二进制”链是您安装 wkhtmltopdf 的计算机的静态路径。如果您通过命令行安装它,它应该是:
/usr/local/bin/wkhtmltopdf
如果您将其安装在供应商存储库中,它应该在那里:
/path/to/Symfony/vendor/...
我找到了可行的解决方案。
我希望它可以帮助别人
在尝试解决同样的问题时,我在关于此主题的另一篇post中注意到需要在二进制位置中指定根目录。添加
%kernel.root_dir%
为我解决了这个错误。试试这个:
binary: %kernel.root_dir%/../vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64
我替换了官方readme中给出的命令
cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/
与以下一个
cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf