最开始可以先将你想要的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. ES与Javscript,JScript,ActionScript等脚本

    ES是一种语言标准,而后面的javascript.JScript.Actionscript都是基于ES的扩展语言. 实际上:javascript=ES+DOM+BOM 显然,JavaScript,JS ...

  2. 华为手机内核代码的编译及刷入教程【通过魔改华为P9 Android Kernel 对抗反调试机制】

    0x00  写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...

  3. [转]Maven类包冲突终极三大解决技巧

    举例 A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖).这 ...

  4. JAVA的基本程序设计结构<上>

    一个简单的Java应用程序 public class FirstSample { public static void main(String[] args) { System.out.println ...

  5. cryptopp使用Qt mingw编译,以及海思平台交叉编译

    编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...

  6. SEO(Search Engine Optimization)优化

    SEO(Search Engine Optimization)汉议为搜索引擎优化,是一种利用搜索引擎的规则提高网站在有关搜索引擎内自然排名的方式. SEO的目的是对网站进行深度的优化,从而帮助网站获取 ...

  7. eureka和feign的使用

    1 eureka和feign的简介(copy来的) eureka:Eureka是Netflix开发的服务发现组件,本身是一个基于REST的服务.Spring Cloud将它集成在其子项目spring- ...

  8. Django Web 测试

    Django 单元测试 模拟浏览器发起请求,测试 web 功能.只是简单记录一下怎么使用. 环境 Win10 Python2.7 Django 1.8.11 MySQL5.6 项目结构 大致如下 my ...

  9. drop blocks

  10. 2020-03-27:JDK1.8中在数据结构上,对HashMap做了什么样的改进?为什么?

    福哥答案2020-04-04:头插改尾插,解决链表成环的问题.链表改成链表和红黑树.