Symfony2 - 使用KNP Snappy从控制器生成PDF给出404

时间:2013-11-10 07:31:15

标签: symfony pdf-generation wkhtmltopdf

我正在使用 KNP Snappy与Symfony2。当我使用来自控制器的响应时,我得到以下响应:

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"'
        )
    );

生成文件,看起来很好。但是响应高于错误。

有人知道问题是什么吗?

1 个答案:

答案 0 :(得分:2)

这是一个已知的问题,通常会在资源丢失时发生,即使找到页面本身并返回200.据报道here - 关于它的极其可怕的事情是它不会当某事物是404时,总是返回2.这就是为什么我(通常我也看到其他人)对exitcode 2和0的处理方式相同。

我也开始an issue来记录退出代码,但Antialize和其他人没有时间更新项目。 (虽然有传言说分叉和0.12,但它们实际上并不是实质性的。)

所以,我要检查的第一件事是在页面内是否有任何可能导致404(或实际上不是2xx)的东西。像缺少CSS,JavaScript或图像文件的东西。