我有一个函数,它会生成一个pdf文件,然后通过电子邮件发送给某人。我首先尝试使用return view
调试它,然后当我在网络选项卡中看到它时,它是正确的。但当我通过电子邮件发送时,我会在那里查看pdf,pdf样式没有正确应用或呈现。有人能告诉我该怎么办吗?问题出在哪里?
这是我的控制器
$css = 'health/css/bootstrap.min.css';
$data_type = pathinfo($css, PATHINFO_EXTENSION);
$css_data = file_get_contents($css);
$path = 'health/img/logo.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
//return view('emails.form',compact('base64','css_data')); test
$pdf = PDF::loadView('emails.form',compact('base64','css_data'));
$beautymail = app()->make(SnowfireBeautymailBeautymail::class);
$beautymail->send('emails.welcome', [], function($message)use($pdf)
{
$message
->from('testemail@gmail.com','TEST')
->to('ronald.b@gmail.com', 'Test')
->attachData($pdf->output(), "asdf.pdf")
->subject('Welcome!');
});
当我尝试做第一次时
return view('emails.form',compact('base64','css_data'));
我得到的是正确的,像这样https://i.stack.imgur.com/0O0Yw.jpg
然后,当我评论返回功能并继续发送电子邮件时,我得到的是这样的https://i.stack.imgur.com/2CViG.jpg
我不知道发生了什么事。如果你有什么想法,请帮忙。谢谢
我发现这个包中有很多错误。我试着使用适用于php的wkhtmltopdf
,我看到了laravel的包装器,我在github上找到了它,它是laravel-snappy
。我得到了很好的结果,我的答案被解决了。
它与dompdf
具有相同的代码结构,但您必须下载wkhtmltopdf
工具并将其保存到您的计算机中才能工作。