Laravel 寄信夾帶 PDF 範例

前言

由於遇到需要夾帶訂單資訊的PDF的需求,順便紀錄一下產生PDF夾進信件的筆記
其實還有其他的套件可以產生PDF,但多數人都推薦 Snappy,尤其是包含中文的情境
不過 Snappy 不支援 windows ,所以接下來的筆記僅適用 linux

環境

  • OS : unubtu

前置安裝

  • 使用 Snappy PDF 套件
    • composer require barryvdh/laravel-snappy
  • 安裝必要相關檔案
    • 64 位元用 composer 下載 wkhtmltopdf 和 wkhtmltoimage
      • composer require h4cc/wkhtmltopdf-amd64 0.12.x
      • composer require h4cc/wkhtmltoimage-amd64 0.12.x
    • 複製檔案到指定位置
      1
      2
      sudo cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/
      sudo cp vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/
    • 修改檔案權限
      1
      2
      sudo chmod +x /usr/local/bin/wkhtmltoimage-amd64 
      sudo chmod +x /usr/local/bin/wkhtmltopdf-amd64
    • sudo apt-get install -y openssl build-essential xorg libssl-dev
    • sudo apt install libssl1.0-dev

程式部分

  • 程式可以參考我的 laravel筆記
  • .env 中加入
    1
    2
    WKHTML_PDF_BINARY=/usr/local/bin/wkhtmltopdf-amd64
    WKHTML_IMG_BINARY=/usr/local/bin/wkhtmltoimage-amd64
  • 在 config/app.php 中加入 'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
  • 產生 PDF 可以參考 app/Mail/SamplePdfMail.php 中的寫法
  • 宣告 PDF 檔 PDF::loadView('email.sample_pdf', $this->requestData)
  • 產生 PDF 檔並夾帶進信件中 ->attachData($pdf->output(), 'pdf-sample.pdf')
  • 參考樣板

結語

  • 產生 PDF 就是這麼簡單

參考