您好,登錄后才能下訂單哦!
這篇文章主要介紹了Laravel使用laravel-snappy包實現HTML轉PDF和PNG的方法,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
前言
由于公司要開發一個新的工具叫做云合同,可以預設好幾套固定的合同模板(html頁面),使用參數填充方式將合同內的數據靈活變化,然后生成 PDF 和 PNG
查閱一番我們發現了 laravel-snappy
這個包,底層使用的是 wkhtmltopdf
,wkhtmltopdf
是構建于 QT Webkit
之上,而 QT Webkit
又是基于 Webkit
的,跟我們的瀏覽器一樣的渲染引擎。
安裝
1、先查看系統是 32 位的還是 64 位的
uname -a
2、通過 composer 安裝 wkhtmltopdf
32位: $ composer require h5cc / wkhtmltopdf-i386 0.12.x $ composer require h5cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h5cc/wkhtmltopdf-amd64 0.12.x $ composer require h5cc/wkhtmltoimage-amd64 0.12.x
3、接下來將安裝好的 wkhtmltopdf 復制到 Linux 系統可執行命令的目錄中
cp vendor/h5cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/ cp vendor/h5cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 /usr/local/bin/ //并使其可執行: chmod +x /usr/local/bin/wkhtmltoimage-amd64 chmod +x /usr/local/bin/wkhtmltopdf-amd64
4、安裝 laravel-snappy 包
composer require barryvdh/laravel-snappy
配置
1、將 ServiceProvider 添加到 config/app.php 中的 providers 數組中
Barryvdh\Snappy\ServiceProvider::class,
2、將 Facades 添加到 config/app.php 中的 aliases 數組中
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
3、生成配置文件
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
注意:config 文件夾中的 snappy.php 就是其配置文件,binary 指向的就是上面安裝的 wkhtml 相關路徑.
使用
//一、下載 $pdf = \PDF::loadView('welcome', $data); return $pdf->download('welcome.pdf'); //二、渲染頁面,在瀏覽器中顯示 $html = '<html><head><meta charset="utf-8"></head><h2>訂單id</h2><h3>12346546</h3></html>'; $pdf = \PDF::loadHTML($html); return $pdf->inline();
Image
//一、下載 $img = \SnappyImage::loadView('welcome', $data); return $img->download('welcome.png'); //二、渲染頁面,在瀏覽器中顯示 $html = '<html><head><meta charset="utf-8"></head><h2>訂單id</h2><h3>12346546</h3></html>'; $img = \SnappyImage::loadHTML($html); return $img->inline();
踩坑記錄
一、當執行生成時若提示 libXrender
或 libssl
庫不存在需要安裝相對應庫
//apt-get 安裝方法 apt-get install libXrender* apt-get install libssl* //yum 安裝方法 yum install libXrender* yum install libssl* //若 yum 安裝時最后報錯 Error: GPG check FAILED yum install libXrender* --nogpgcheck yum install libssl* --nogpgcheck
二、中文顯示亂碼問題,這個問題需要在 Linux 中安裝中文字體即可解決
查看系統字體
在開始安裝之前,我們先查看系統中已經安裝的字體,要查看系統中已經安裝的字體,我們可以使用 fc-list
命令進行查看,如果系統中沒有該命令的話,我們需要先安裝相關的軟件包。
在 centos 上,使用如下命令進行安裝:
yum install -y fontconfig mkfontscale
安裝完畢后,我們可以來查看系統中已經安裝的字體
[root@8d079be5059a php]# fc-list /usr/share/fonts/urw-base35/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic /usr/share/fonts/urw-base35/D050000L.t1: D050000L:style=Regular ...
如果要查看系統中已經安裝的中文字體,我們可以使用如下命令
[root@8d079be5059a php]# fc-list :lang=zh
通過上圖我們可以看到系統中是沒有中文字體的
我們進入 Windows 的 字體目錄
C:\Windows\Fonts
將 simfang.ttf 字體遠程復制或者以其他方式放到服務器的字體目錄中
//遠程復制 scp simfang.ttf root@ip:/usr/share/fonts
然后建立字體索引信息,更新字體緩存
cd /usr/share/fonts/mkfontscale mkfontdir fc-cache
至此,字體已經安裝完畢。現在我們再來查看中文字體,是否安裝成功
[root@8d079be5059a php]# fc-list :lang=zh /usr/share/fonts/simfang.ttf: FangSong,仿宋:style=Regular,Normal,oby?ejné,Standard,Κανονικ?,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
感謝你能夠認真閱讀完這篇文章,希望小編分享Laravel使用laravel-snappy包實現HTML轉PDF和PNG的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。