Vue.js 如何从vuejs下载在laravel中生成的pdf?
我在laravel中有以下函数用于生成pdfVue.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')) {
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()
函数?