2017-10-19 69 views
0

PDF生成包barryvdh/laravel-dompdf,PDF工作正常。我有这样的代码:打开PDF并发送电子邮件附件只需点击一下

public function fun_pdf($test_id) { 
    $test  = Test::where('id', $test_id)->first(); 
    $questions = (new TestQuestionsController)->questionwithanswers($test_id, $randomorder = 1); 

    $test_info = (new TestInfoController)->testInfo($test_id); 

    $pdf = PDF::loadView('website.tests_pdf.take-test', ['test_id' => $test_id, 'questions' => $questions, 'test' => $test, 'test_info' => $test_info]); 
    $user_email = Auth::user()->email; 

    Mail::to($user_email)->send(new PdfTest($test)); 

    return $pdf->stream('document.pdf'); 
} 

我想发送PDF到电子邮件,也可以点击按钮打开。我也有一个电子邮件的代码,在一个文件夹中Mail我有这样的代码:

public $test; 

public function __construct(Test $test) { 
    $this->test = $test; 
} 

/** 
* Build the message. 
* 
* @return $this 
*/ 
public function build() { 
    return $this->view('website.tests_pdf.take-test'); 
} 

谁能请帮助我如何我做到这一点?

+0

你尝试过这么远吗? –

回答

0

你可以试试这个(我已经添加了评论)

public function fun_pdf($test_id) { 
    $test  = Test::where('id', $test_id)->first(); 
    $questions = (new TestQuestionsController)->questionwithanswers($test_id, $randomorder = 1); 

    $test_info = (new TestInfoController)->testInfo($test_id); 

    $pdf = PDF::loadView('website.tests_pdf.take-test', ['test_id' => $test_id, 'questions' => $questions, 'test' => $test, 'test_info' => $test_info]); 
    $user_email = Auth::user()->email; 

    // output pdf as a string, so you can attach it to the email 
    $pdfHtml = $pdf->output(); 

    // pass pdf string 
    Mail::to($user_email)->send(new PdfTest($test, $pdfHtml)); 

    return $pdf->stream('document.pdf'); 
} 

barryvdh/laravel-dompdf readme

如果需要输出作为一个字符串,可以与输出得到渲染PDF()功能,所以你可以自己保存/输出。

要安装PDF格式的电子邮件看看原始数据附件laravel mail documentation

namespace App\Mail; 

use App\Order; 
use Illuminate\Bus\Queueable; 
use Illuminate\Mail\Mailable; 
use Illuminate\Queue\SerializesModels; 

class PdfTest extends Mailable 
{ 
    use Queueable, SerializesModels; 

    public $test; 
    public $pdfHtml; 

    public function __construct(Test $test, $pdfHtml) { 
     $this->test = $test; 
     $this->pdfHtml = $pdfHtml; 
    } 

    /** 
    * Build the message. 
    * 
    * @return $this 
    */ 
    public function build() { 
     return $this->view('website.tests_pdf.take-test') 
        // attach the pdf to email 
        ->attachData($this->pdfHtml, 'name.pdf', [ 
         'mime' => 'application/pdf', 
        ]);; 
    } 
}