我试图在Symfony中使用KnpSnappyBundle生成PDF,但每当我尝试执行此操作时,它都会超过PHP中最长60秒的执行时间。
以下是行动:
/**
* @Route("/download-agreement", name="download_agreement")
*/
public function downloadAgreementAction()
{
$session = new Session();
$html = $this->renderView('client-representation.html.twig', array(
'clientAgreementData' => $session->get("sessionClientAgreementData"),
"pdfStatus" => true
));
return new Response(
$this->get('knp_snappy.pdf')->getOutputFromHtml($html),
200,
array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="error.pdf"'
)
);
}
当我在树枝模板中使用绝对网址时,它似乎也超过了执行时间,例如absolute_url(asset('css/agreement.css'))
。如果我使用相对网址,那么css将被忽略并且PDF将生成,但当然我需要样式。
有什么想法吗?
编辑:对于有这个问题的人,使用绝对网址应该在生产服务器上运行;然而,在localhost上,你可能会遇到我遇到的问题。感谢您chalasr。
答案 0 :(得分:1)
好的,解决方案实际上非常简单,问题是它不能在开发(本地)环境中工作,因为由于某种原因,wkhtmltopdf不喜欢localhost:8000 ......无论如何。
From this issue(和许多其他人)在laravel包中为这个问题打开了 另一个在捆绑https://github.com/KnpLabs/KnpSnappyBundle/issues/66
上我第一次使用KnpSnappyBundle时,我使用了很多替代品,但未成功。
尝试使用包含一个或多个绝对URL的视图(对于Pdf
类的所有相关方法都相同)生成pdf时,会发生'超出超时'。
为了处理这个错误,我使用了一个仅用于生成Pdf的特定模板,我将css直接放在<style></style>
块中。
像这样,风格被正确应用。