2016-07-26 106 views
0

我在knpSnappyBundle上有这个错误,我试图生成一个pdf然后通过电子邮件发送。KnpSnappyBundle退出状态代码'127'说出了一些问题:

我的配置是这样的:

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:找不到 ” stdout:“” command:/ usr/local/bin/wkhtmltopdf --lowquality'/tmp/knp_snappy57970542debe22.97700913.html''/tmp/knp_snappy57970542dec563.25042325.pdf'。

回答

0

我找到一个可行的解决方案。

  • 在供应商的Symfony2
  • 安装wkhtmltopdf在虚拟机中安装wkhtmltopdf
  • 在虚拟机中安装xvfb的
  • 创造一个wkhtmltopdf安装与USR/local/bin目录内的文件wkhtmltopdf.sh (xvfb-run -a -s“-screen 0 640x480x16”wkhtmltopdf --dpi 150 --zoom 0.6“$ @”)
  • 在你的config.yml中,使用/ usr/local/bin/wkhtmltopdf这样的适当路径。 sh

我希望它可以帮助某人

0

“二进制”链是您计算机的静态路径,您安装了wkhtmltopdf。如果通过命令行安装了它,它应该是:

/usr/local/bin/wkhtmltopdf 

如果您在供应商的仓库安装了它,它应该有:

/path/to/Symfony/vendor/... 
0

在试图找出同样的问题时,我在另一个post上注意到此主题需要在二进制位置指定根目录。添加%kernel.root_dir%为我解决了这个错误。试试这个:

binary:  %kernel.root_dir%/../vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64