2016-07-26 171 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