2013-11-10 54 views
1

我正在使用KNP Snappy和Symfony2。当我使用从控制器我得到以下响应的响应:控制器的Symfony2 - 使用KNP生成PDF从控制器中快速生成404

The exit status code '2' says something went wrong: 
stderr: "Loading pages (1/6) 
[> ] 0% 
[======> ] 10% 
[============================> ] 48% 
[============================================================] 100% 
Counting pages (2/6) 
[============================================================] Object 1 of 1 
Resolving links (4/6) 
[============================================================] Object 1 of 1 
Loading headers and footers (5/6) 
Printing pages (6/6) 
[> ] Preparing 
[===================> ] Page 1 of 3 
[=======================================> ] Page 2 of 3 
[============================================================] Page 3 of 3 
Done 
Exit with code 2 due to http error: 404 Page not found 
" 
stdout: "" 
command: /usr/bin/wkhtmltopdf --lowquality --no-outline  '/tmp/knp_snappy527f3354ad21d2.78976975.html' '/tmp/knp_snappy527f3354ad6e37.45993260.pdf'. 

部分看起来是这样的:产生

$html = $this->renderView('MyBundle:Visit:print.html.twig', array(
     'visit' => $visit, 
     'themes' => $themes 
    )); 

    return new Response(
     $this->get('knp_snappy.pdf')->getOutputFromHtml($html), 
     200, 
     array(
      'Content-Type'   => 'application/pdf', 
      'Content-Disposition' => 'attachment; filename="file.pdf"' 
     ) 
    ); 

的文件,它看起来很好。但是,回应是错误的。

有谁知道问题可能是什么?

+0

尝试,而无需创建PDF,如果你得到任何错误检查返回渲染的模板 - 缺少变量,语法错误,... – nifr

回答

2

这是一个已知的问题,通常发生在资源缺少,即使页面本身被发现,返回200据报道here - 关于它的超级可怕的是,它并不总是 2时东西是404.这就是为什么我(并且经常看到其他人)将退出代码2和0视为相同的原因。

我也开始an issue以获得记录的退出代码,但Antialize和其他人没有时间更新项目。 (虽然有分叉和0.12的传言,但它们并不是真正无用的。)

因此,我要检查的第一件事是,是否有任何可能导致404(或实际上不是2xx的任何其他内容)的内容这一页。像缺少的CSS,JavaScript或图像文件。

+0

是的,这事实确实如此!大!问题在于样式表没有被加载,因为我设置了路径错误。谢谢你的帮助。 – apfz

-1

将symfony2加载到发送到pdf的树枝文件的资源似乎有问题。为了解决这个问题,添加所有的资产在树枝文件中像这样的:

{{ app.request.scheme ~'://' ~ app.request.httpHost ~ asset('MY_ASSET') }}