我有一个Silex项目,我想生成一个PDF项目的视图。
我在OSX上安装了本地wkhtmltopdf,我正在使用Snappy。
例如,您在localhost:8001/test/702254
,并显示该页面。如果您访问localhost:8001/test/702254/print
,那么该页面将是之前的PDF(我希望浏览器将PDF显示给客户端,然后他可以下载它)。
我的路线中有一个变量,如果它有'print'值,我想显示PDF。
$body = null;
$headers = null;
if ($request->get('print') == 'print') {
$uri = str_replace('/print', '', $_SERVER['REQUEST_URI']);
$this->snappy->setOption('cookie', array('MY-COOKIE' => $_COOKIE['MY-COOKIE']));
//$this->snappy->setTimeout(360);
$body = $this->snappy->getOutput('http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . "{$_SERVER['HTTP_HOST']}{$uri}");
$headers = array(
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="Export.pdf"'
);
}
else {
$body = $app['twig']->render('views/index.html.twig', $twigParams);
$headers = array('Cache-Control' => 'max-age=300, public');
}
return new Response($body, 200, $headers);
我的问题是,当我使用'/ print'调用URL时,出现以下错误:
ProcessTimedOutException in Process.php line 1211:
The process "/usr/local/bin/wkhtmltopdf --lowquality --cookie 'MY-COOKIE' '4vkvcjnt2svf0' 'http://localhost:8001/test/702254' '/var/folders/2h/qwnt4dk97dsg1mhv_63ycbrh0000gp/T/knp_snappy574713575a5e51.78801388.pdf'" exceeded the timeout of 60 seconds.
我希望这不是'OSX问题',正如我在某些主题中所读到的那样......