Laravel如何使用laravel-snappy包實現HTML轉PDF和PNG

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

下面由laravel教程欄目給大家Laravel使用laravel-snappy包實現HTML轉PDF和PNG ,希望對需要的朋友有所幫助!

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?h4cc?/?wkhtmltopdf-i386?0.12.x $?composer?require?h4cc?/?wkhtmltoimage-i386?0.12.x 64位: $?composer?require?h4cc/wkhtmltopdf-amd64?0.12.x $?composer?require?h4cc/wkhtmltoimage-amd64?0.12.x

3、接下來將安裝好的 wkhtmltopdf 復制到 Linux 系統可執行命令的目錄中

cp?vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64?/usr/local/bin/ cp?vendor/h4cc/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 數組中

BarryvdhSnappyServiceProvider::class,

2、將 Facades 添加到 config/app.php 中的 aliases 數組中

'PDF'?=>?BarryvdhSnappyFacadesSnappyPdf::class, 'SnappyImage'?=>?BarryvdhSnappyFacadesSnappyImage::class,

3、生成配置文件

php artisan vendor:publish --provider="BarryvdhSnappyServiceProvider"

注意:config 文件夾中的 snappy.php 就是其配置文件,binary 指向的就是上面安裝的 wkhtml 相關路徑.

使用

PDF

//一、下載 $pdf?=?PDF::loadView('welcome',?$data); return?$pdf-&gt;download('welcome.pdf');  //二、渲染頁面,在瀏覽器中顯示 $html?=?'<meta><h1>訂單id</h1><h2>12346546</h2>'; $pdf?=?PDF::loadHTML($html); return?$pdf-&gt;inline();

Image

//一、下載 $img?=?SnappyImage::loadView('welcome',?$data); return?$img-&gt;download('welcome.png');  //二、渲染頁面,在瀏覽器中顯示 $html?=?'<meta><h1>訂單id</h1><h2>12346546</h2>'; $img?=?SnappyImage::loadHTML($html); return?$img-&gt;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:WindowsFonts

將 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如何使用

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享