Laravel Snappy PDF 用來產生PDF與圖片的外掛套件
Laravel Snappy PDF是用來將網頁HTML轉換成PDF或者圖片下載的外掛工具,可以用在需要讓使用者下載的表單中需要帶入使用者的姓名或者其他動態資料的狀況,因此就不能將PDF做成單純的檔案下載,而是將HTML樣板製作完畢,然後下載前才將使用者資料帶入HTML之後轉換成PDF讓使用者下載
外掛github :https://github.com/barryvdh/laravel-snappy
如果你還沒有看過Larvel請參考之前的文章 :
第一步 :安裝 wkhtmltopdf
參考網頁 :https://github.com/KnpLabs/snappy#wkhtmltopdf-binary-as-composer-dependencies
最簡單的安裝方式是透過Composer安裝
1 2 3 4 |
composer require h4cc/wkhtmltopdf-i386 0.12.x composer require h4cc/wkhtmltoimage-i386 0.12.x composer require h4cc/wkhtmltopdf-amd64 0.12.x composer require h4cc/wkhtmltoimage-amd64 0.12.x |
可以依照自己的需求選擇安裝x86或者x64的版本,也可選擇只裝轉換PDF的套件或者圖片的套件
第二步 :將wkhtmltopdf binary檔案放到適當的位置
我是將binary放到 MyProject/vendor/vendor/wkhtmltopdf 底下
可以根據不同的作業系統建立不同的資料夾來存放,因為不同作業系統的binary檔是不同的,比如說
Linux : MyProject/vendor/vendor/wkhtmltopdf/linux-64/bin/wkhtmltopdf
windows : MyProject/vendor/vendor/wkhtmltopdf/win-32/bin/wkhtmltopdf.exe (還有wkhtmltox.dll)
第三步 :讓這個檔案具有執行權限
在linux上
1 |
chmod +x MyProject/vendor/vendor/wkhtmltopdf/linux-64/bin/wkhtmltopdf |
windows上就對檔案按右鍵>內容>將執行權限打勾即可
第四步 :安裝snappy 套件
一樣透過Composer 就可以了
1 |
composer require barryvdh/laravel-snappy |
第五步 :設定Laravel 的config/app.php檔案
將service provider以及alias加進來
1 2 3 4 5 6 7 8 9 |
'providers' => [ //略 Barryvdh\Snappy\ServiceProvider::class, ], 'aliases' => [ //略 'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, ], |
第六步 :publish config
1 |
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider" |
第七步 :編輯snappy config檔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
return array( 'pdf' => array( 'enabled' => true, 'binary' => '"' . base_path('vendor/vendor/wkhtmltopdf/'.env('OS_TYPE').'-' . env('OS_BIT') . '/bin/wkhtmltopdf') . '"', 'timeout' => false, 'options' => array(), ), 'image' => array( 'enabled' => true, 'binary' => '"' . base_path('vendor/vendor/wkhtmltopdf/'.env('OS_TYPE').'-' . env('OS_BIT') . '/bin/wkhtmltoimage') . '"', 'timeout' => false, 'options' => array(), ), ); |
這邊會分兩個部分,一個是pdf一個是image,分別代表處理pdf以及圖片的兩個binary檔,範例中我將binary => 指定到第二步驟所設定的位置
其中因應專案可能跑在不同的位置上所以作業系統的資料夾就用.env中的參數來帶入
第八步 :開心使用
1 2 |
$pdf = PDF::loadView('pdf.invoice', $data); return $pdf->download('invoice.pdf'); |
範例中直接講 pdf.invoice 這個view帶入$data變數,然後直接產生invoice.pdf提供下載
其中$data就是要顯示在pdf.invoice 中的變數
首頁 » 技術文章 » Laravel » Snappy PDF 用來產生PDF與圖片的外掛套件