Symfony 2 kpn snappy生成pdf,输出符合安全区域

时间:2013-11-29 12:37:01

标签: php symfony pdf bundle

我使用Symfony2 kpn snappy bundle生成pdfs。我想从带有CSS的html页面生成PDF。我找到了一个解决方案,但它有一个问题:

    $pageUrl = $this->generateUrl('accounts_management_generate_pdf_markup',
    array('invoice' => $invoiceData), true); // use absolute path!

    return new \Symfony\Component\HttpFoundation\Response(
        $this->get('knp_snappy.pdf')->getOutput($pageUrl), 200, array(
        'Content-Type' => 'application/pdf',
        'Content-Disposition' => 'attachment; filename="file.pdf"'
        )
    );

问题是pageUrl accounts_management_generate_pdf_markup位于安全区域后面,未经身份验证就无法访问。生成的文件只是登录页面,如果未记录,此路径accounts_management_generate_pdf_markup将重定向到该页面。

我的问题是:

有没有办法传递给snappy身份验证凭据? 是否有另一种方法使用snappy bundle使用样式(css)生成pdf

1 个答案:

答案 0 :(得分:5)

您可以将会话cookie添加为getOutput函数的参数:

        $pageUrl = $this->generateUrl('route', array('id' => $id), true);
        $session = $this->get('session');
        $session->save();
        session_write_close();

        return new Response(
            $this->get('knp_snappy.pdf')->getOutput($pageUrl, array('cookie' => array($session->getName() => $session->getId()))),
            200,
            array(
                'Content-Type'          => 'application/pdf',
                'Content-Disposition'   => 'attachment; filename="file.pdf"'
            )
        );