使用Silex

时间:2016-05-26 15:40:09

标签: php symfony pdf silex snappy

我有一个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问题',正如我在某些主题中所读到的那样......

0 个答案:

没有答案