我正在使用Laravel 5.4,并且正在尝试使用Snappy PDF生成PDF下载。
我之所以要这样做是因为我可以在不重新加载页面的情况下将表单数据提交到PDF。
这是我的刀片模板:
<div>
Download a PDF: <button type="button" class=" btn-success btn-sm" id="js-download" >Download</button>
</div>
这是我的路线:
Route::get('/download', 'FormController@generatePDF');
这是我的控制器功能:
public function generatePDF(Request $request)
{
$pdf = PDF::loadView('pdf.download', $request);
return $pdf->download('download.pdf');
}
这是我的.js文件:
$(document).on("click", "#js-download", function(e) {
e.preventDefault();
$.ajax({
url: '/download',
data: $("#js-pdf-form").serialize(),
success:function(data) {
console.log(data)
},
error:function() {
}
});
});
如果我通过浏览器中的地址栏调用路由,则PDF起作用,但是,如果单击按钮并尝试AJAX请求,则它会失败,但是它将控制台日志显示为PDF输出...
>任何帮助将不胜感激。
答案 0 :(得分:4)
替换它:
return $pdf->download('download.pdf');
对此:
$pdf_file = 'download.pdf';
$pdf_path = 'public/pdf/'.$pdf_file;
$pdf->save($pdf_path);
return asset($pdf_path);
别忘了创建public / pdf文件夹...