使用Laravel路径和vuejs axios以模态加载PDF

时间:2017-08-22 16:10:47

标签: html laravel pdf routes vue.js

我正在尝试生成PDF并在按钮单击时打开模态。 在模式中,生成的PDF应该加载到DOM中。

要生成PDF,我使用了axios:

axios.post('/preview', formData)
.then(function (response) {
     this.previewPdf = response.data;
}.bind(this));

生成的PDF名称在控制器中返回并保存在this.previewPdf变量中。

然后我使用laravel URL通配符在模式中加载PDF。

<div class="modal-body">
    <embed :src="'/preview/' + previewPdf" width="100%" height="600" type='application/pdf'>
</div>

路由/preview/{pdfname}的控制器返回PDF。

return Storage::disk('local')->get('temppdf/' . $pdfname);

但是,如果我打开模态,PDF似乎已加载(网络预览):

%PDF-1.7 %���� 2 0 obj <</Type/XObject

但是模态只显示空<embed>。虽然它的src是正确的src="preview/pdfname.pdf"

可能导致此问题的原因是什么?

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

在我返回PDF的控制器中,我需要返回一个标题..之前没有标题的内容类型只是html。

使用这行代码可以工作:

return response(Storage::disk('local')->get('temppdf/' . $pdfname), 200)
              ->header('Content-Type', 'application/pdf');