使用AJAX请求生成PDF

Sha*_*aun 2 javascript php pdf ajax laravel

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

Route::get('/download', 'FormController@generatePDF');
Run Code Online (Sandbox Code Playgroud)

这是我的控制器功能:

public function generatePDF(Request $request)
{
    $pdf = PDF::loadView('pdf.download', $request);
    return $pdf->download('download.pdf');
}
Run Code Online (Sandbox Code Playgroud)

这是我的.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() {
    }
});

});
Run Code Online (Sandbox Code Playgroud)

如果我通过浏览器中的地址栏调用路由,则PDF可以工作,但是如果我单击按钮并尝试AJAX请求,则它会失败,但是它将控制台日志显示为PDF输出...

任何帮助将不胜感激。

Thi*_*ael 5

代替它:

return $pdf->download('download.pdf');
Run Code Online (Sandbox Code Playgroud)

对此:

$pdf_file = 'download.pdf';

$pdf_path = 'public/pdf/'.$pdf_file;

$pdf->save($pdf_path);

return asset($pdf_path);
Run Code Online (Sandbox Code Playgroud)

不要忘记创建public / pdf文件夹...