我在试用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');
您的帮助/建议/建议将非常适用。提前谢谢!
答案 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
答案 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'));