最开始可以先将你想要的pdf模板写好先,如testPage

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{{$data[['title']}}</title>
<style type="text/css"> * {
font-family: 'Arial', sans-serif;
}
ul li{
list-style:none;
float:left;
}
div li{
list-style:none;
margin-left:50px
}
table {
border:1px solid black;
}
table th{
border:1px solid black;
}
table td{
border:1px solid black;
word-wrap: break-word;
word-break: break-all;
}
.header{
width:100%;
height:800px;
text-align:center
}
</style> </head> <body> <div class="header">
<div style="text-align:center">
</div>
<table style="width:100%;" cellspacing="0">
<tr>
<th colspan="5"><h1>{{$data['testPager']['exam_page']['title']}}</h1></th>
</tr>
<tr>
<th colspan="3" style="text-align:left"><h3>Shop: {{$data['testPager']['pagerable']['name']}}</h3></th>
<th colspan="2"><h3>Total Score</h3></th>
</tr>
<tr>
<!-- <th>No</th> -->
<th colspan="3" style="text-align:left"><h3>Date</h3></th>
<th colspan="2" style="font-color:red"><font color="red">{{$data['score']}}</font></th>
</tr>
<tr>
<th>No</th>
<th>Category</th>
<th>Details</th>
<th>Point</th>
<th>Score</th>
</tr>
@foreach($data['page_content'] as $key=>$value)
<tr>
<td>{{$key+1}}</td>
<td>{{$value['title']}}</td>
<td style="text-align:left">{{$value['description']}}</td>
<td>{{$value['point']}}</td>
<td><font color="red">{{$value['score']}}</font></td>
</tr>
@endforeach
</table>
</div>
</div> </body>
<script language="JavaScript" type="text/javascript">
</script>
</html>

1.后端控制器获取数据,分派队列任务,将获取的数据传到队列中去

$user = User::all()->toArray();

dispatch(new TestPdf($user));  //TestPdf()为创建的队列
2.TestPdf()队列中生成pdf数据

$pdf = PDF::loadView('pdfTemplate.testPage',compact('data'))->setPaper('a4'); //pdfTemplate.testPage为views目录下的视图文件,compact('data')是传到pdf中的数据,
setPaper('a4')设置pdf的大小
//将pdf发送到1093684305@qq.com的邮箱
Mail::to('1093684305@qq.com')->send(new ReportPage($pdf,$user));
3.创建Mail类
php artisan make:mail ReportPage    //在根目录下的app下的Mail目录生成ReportPage.php文件
class ReportPage extends Mailable
{
use Queueable, SerializesModels;
// protected $data;
protected $pdf; //传递过来的pdf原数据
protected $data; //pdf的变量数据
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($pdf,$data)
{
$this->data = $data;
$this->pdf = $pdf;
} /**
* Build the message.
*
* @return $this
*/
public function build()
{
    //发送邮件视图testPage时,data数据也要传到视图中去,output()是pdf原数据,testPage.pdf发送到邮箱的pdf文件名字
return $this->view('pdfTemplate.testPage',['data'=>$this->data])
->subject('testPage') //邮件主题,即收到邮件时邮件的名字
->attachData($this->pdf->output(), 'testPage.pdf', [
'mime' => 'application/pdf'
]);
}
}

后端队列生成pdf,发送到邮箱的更多相关文章

  1. 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all

    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...

  2. Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

    测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

  3. netcore3.1 + vue (前后端分离)生成PDF(多pdf合并)返回前端打印

    1.使用Adobe Acrobat XI Pro编辑pdf模板 2.公共类代码 3.service层调用 4.Controller层 5.前端(Vue) 因为print.js不支持宋体,所以打算用后台 ...

  4. laravel使用snappy生成pdf问题及过程(本地环境)

    1.安装过程可以按照这里进行https://packagist.org/packages/barryvdh/laravel-snappy 其中要按装好 "barryvdh/laravel-s ...

  5. 将生成的Excel表发送到邮箱

    本文接上一篇,将得到的Excel表发送到邮箱.. 在上一篇中,本人使用的是直接从数据库中获取数据,然后包装成Excel表.现在将该Excel表发送到目的邮箱,如果需要跟上篇一样,定时每天某时刻发送,就 ...

  6. 前端生成PDF,让后端刮目相看

    PDF 简介 PDF 全称Portable Document Format (PDF)(便携文档格式),该格式的显示与操作系统.分辨率.设备等因素没有关系,不论是在Windows,Unix还是在苹果公 ...

  7. Java使用iText7生成PDF

    前言 我们之前使用js库html2canvas + jspdf实现html转PDF.图片,并下载(详情请戳:html页面转PDF.图片操作记录),大致原理是将页面塞到画布里,以图片的方式放到PDF中, ...

  8. 生成 PDF 全攻略【1】初体验

    经历过多少踩坑,翻看过多少类似博客,下载过多少版本的Jar,才能摸索出正确的代码书写方式,才能实现项目经理需求分析书中的功能点. 本文借一次 JavaEE 生成PDF的颠簸的实现过程,描述中小公司程序 ...

  9. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例

    研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...

随机推荐

  1. 探讨Netty获取并检查Websocket握手请求的两种方式

    在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...

  2. 认识IPv4分组

    强化一下记忆:以免忘记. 图就不放了. 首部20B (4B的整数倍) 的固定部分12个域,的确很麻烦的:IPv6才8个域,首部长度8B的整数倍 20B分5行吧,每行4B,即32位.第一行,第二行,第三 ...

  3. spring-Sessions are not supported by the MongoDB cluster to which this client is connected

    原因: 1.mongodb版本过低4.0以下不支持事务的情况下会报这个 2.安全认证问题参考如下连接 https://blog.csdn.net/ssehs/article/details/10530 ...

  4. Navicat Premium 安装破解

    软件官网 : https://www.navicat.com.cn/ Navicat Premium 12 下载地址:https://www.lanzous.com/i9j0syf 密码:7pup N ...

  5. C#LeetCode刷题之#415-字符串相加(Add Strings)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3873 访问. 给定两个字符串形式的非负整数 num1 和num2 ...

  6. Quartz.Net的基础使用方法,多任务执行

    接着上面单任务执行的代码做一下简单的扩展 主要看下面这段代码,这是Quartz多任务调度的方法,主要就是围绕这个方法去扩展: // // 摘要: // Schedule all of the give ...

  7. java如何实现发送邮箱

    package cn.buy.util; import java.security.GeneralSecurityException; import java.util.Properties; imp ...

  8. JSONP跨域和CORS跨域的区别

    跨域: 由于浏览器中的javascript的同源策略,同源策略会阻止一个域的JavaScript脚本和另一个域的内容进行交互. 同源:协议,域名,端口,三者有一个不同即为跨域. 解决跨域有以下多种方法 ...

  9. Mybatis-04-分页

    分页 思考:为什么要分页? 减少数据的处理量 1 使用limit分页 select * from user limit startIndex,pageSize;

  10. 旧 WCF 项目成功迁移到 asp.net core web api

    背景 接上一篇,放弃了 asp.net core + gRPC 的方案后,我灵光一闪,为什么不用 web api 呢?不也是 asp.net core 的吗?虽然 RESTful 不是强约束,客户端写 ...