Laravel pdf生成显示(snappy库)返回ERR_INVALID_RESPONSE

时间:2016-10-27 13:13:25

标签: php laravel pdf laravel-snappy

我在试用snappy库的例子时遇到了一些麻烦。当我尝试使用getOutput函数显示时,浏览器返回ERR_INVALID_RESPONSE。我尝试了here发布的解决方案,但它对我不起作用。

这是我的函数代码:

    // Display the resulting pdf in the browser
    // by setting the Content-type header to pdf
    $snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
    header('Content-Type: application/pdf',true,200);
    header('Content-Disposition: attachment; filename="file.pdf"');
    echo $snappy->getOutput('http://www.github.com');

您的帮助/建议/建议将非常适用。提前谢谢!

2 个答案:

答案 0 :(得分:0)

尝试首先将pdf保存在本地存储中,然后返回响应。

看起来像这样:

$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
$snappy->save('path/to/your/storage');
$response = Response::make(Storage::get('path/to/your/storage'), 200);
$response->header("Content-Type", 'application/pdf');
$response->header("Content-Disposition", 'attachment; filename=file.pdf');
return $response;

由于您使用的是Laravel,我建议您使用Laravel包装器来实现snappy

Snappy PDF/Image Wrapper for Laravel 5 and Lumen 5.1

答案 1 :(得分:0)

我的猜测 wkhtmltopdf 的二进制文件丢失了。 您可以通过从Laravel项目所在的文件夹中执行此命令来安装它:

$ composer require h4cc/wkhtmltopdf-i386 0.12.x

或64位系统:

$ composer require h4cc/wkhtmltopdf-amd64 0.12.x

然后你需要在你的功能中改变这一行:

$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');

$snappy = new Pdf(base_path('vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64'));

来源:Wkhtmltopdf binary installation as composer dependency