Vue.js 如何从vuejs下载在laravel中生成的pdf?

Vue.js 如何从vuejs下载在laravel中生成的pdf?,vue.js,laravel-5,Vue.js,Laravel 5,我在laravel中有以下函数用于生成pdf public function download_agreement(Request $request){ try{ /* $items = DB::table("items")->get(); view()->share('items',$items); */ if ($request->has('download')) {

我在laravel中有以下函数用于生成pdf

public function download_agreement(Request $request){
        try{
           /*  $items = DB::table("items")->get();
                    view()->share('items',$items); */
            if ($request->has('download')) {
            $pdf = PDF::loadView('pdf.agency.agreement');
            return $pdf->download('pdfview.pdf');
        }
        $pdf = PDF::loadView('pdf.agency.agreement');
        return view('pdfview');
        }
        catch(\Exception $error){
            Log::error('[RegistrantsController] error in send_agreement ' . $error);
            return response()->json(['code' => 403, 'message' => 'Something went wrong']);
        }
    }
然后我做了以下工作:

downloadAgreement() {
      console.log("DOWNLOAD");
      let sendData = {
        uuid: this.$route.params.uuid,
        email: "email@gmail.com",
        download: true
      };
     axios
    .post(config.routePrefix + "/agency/download_agreement", sendData)
    .then(response => {
      console.log(response);
      const url = window.URL.createObjectURL(new Blob([response.data]));
      console.log(url);
      const link = document.createElement("a");
      link.href = url;
      link.setAttribute("download", "file.pdf");
      document.body.appendChild(link);
      link.click();
    })
    .catch(error => {
      console.log(error);
    });
}
我生成了pdf并设法下载了它。我的问题是它显示了我的空白PDF。 在my.blade文件中:

@extends('pdf.layout')
@section('style')
<style>
    .agreement-text {
        margin-left: 7%;
        margin-right: 7%;
    }
    .sign-line{
      align-self: center;
      width: 60%;
      border-bottom: 1px solid black;
    }
    .ql-align-justify{
        text-align: justify;
    }
    .ql-align-center{
        text-align: center;
    }
    .header-line{
        border: none;
        height: 3px;
        color: #a1d138 ;
        background-color: #a1d138 ;
    }
</style>
@stop
@section('content')
    <header>
        {{-- <img style="width: 30%;" src="{{ config('arm.arm_app.email_pdf_logo') }}"> --}}
        <hr class="header-line">
    </header>

    <div class="agreement-text">
        TEST TEST TEST TEST
    </div>


    <div class="img-div">
        {{-- <img class="img-center" src="{{$sign}}"> --}}
    </div>

    <div class="img-div">
        <hr class="sign-line">
        Nombre
    </div>
@stop
@extends('pdf.layout'))
@节(“样式”)
.协议文本{
左缘:7%;
保证金权利:7%;
}
.标志线{
自对准:居中;
宽度:60%;
边框底部:1px纯黑;
}
.ql对齐对齐{
文本对齐:对齐;
}
.ql对齐中心{
文本对齐:居中;
}
.标题行{
边界:无;
高度:3倍;
颜色:#a1d138;
背景色:#a1d138;
}
@停止
@节(“内容”)
{{--  --}}

试验 {{-- --}}
名义 @停止

目前我没有发送任何数据,我只是想轻松生成一个包含文本的pdf文件

假设
$pdf->download
已经返回了正确的标题,最简单的解决方案是向用户显示指向该URL的链接,用户可以单击该链接。如果页面上可能有未保存的内容,例如表单,请确保在新选项卡中打开它


您还可以使用JS打开一个弹出窗口。据我所知,所有浏览器都会显示保存提示,然后关闭选项卡。

内部服务器错误总是伴随着特定的错误消息。在你的日志中找到它,找出它说的是什么。我已经生成并下载了它,但它显示为空白。我已经编辑了我的问题,我已经生成并下载了它,但它显示为空白。我已经编辑了我的问题,我的意思是直接链接到您的
下载协议
页面,但现在我看到这是一个post请求,所以不起作用。。如果手动导航到使用
createObjectURL
(复制粘贴到地址栏)生成的URL,它是否工作?您是否正在从用户交互触发
downloadAgreement()
函数?