laravel中使用的PDF擴展包——laravel-dompdf和laravel-snappy

這兩天項目中需要將HTML頁面轉換為PDF文件方便打印,我在網上搜了很多資料。先后嘗試了laravel-dompdf和laravel-snappy兩種擴展包,個人感覺laravel-snappy比較好用。

?

?

一、使用laravel-dompdf擴展包

1、安裝擴展包

我們通過composer來安裝

composer require barryvdh/laravel-dompdf

?

2、將ServiceProvider添加到config / app.php中的providers數組中

Barryvdh\DomPDF\ServiceProvider::class,

?

3、添加facade到config / app.php中的aliases數組中

'PDF' => Barryvdh\DomPDF\Facade::class,

?

4、使用

可以創建一個dompdf實例并加載HTML字符串、文件或者視圖,然后使用stream()方法顯示在瀏覽器中、save()方法保存到文件或者download()方法下載。

$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

也可以使用門面(facade),使用前先use PDF;

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

也可以鏈式操作

return PDF::loadFile(public_path().'/myfile.html')->save('/path-to/my_stored_file.pdf')->stream('download.pdf');

可以更改方向(landscape將方向設為橫向,一般使用的都是豎向的,使用時注意一下)和紙張大小,并隱藏或顯示錯誤(默認情況下,調試打開時顯示錯誤)

PDF::loadHTML($html)->setPaper('a4', 'landscape')->setWarnings(false)->save('myfile.pdf')

其他的一些基本使用和配置請參考文檔資料https://github.com/barryvdh/laravel-dompdf

?

5、解決中文亂碼問題

下載一個支持unicode編碼的中文字體。例如:msyh.ttf(微軟雅黑)

建議先在storage下創建fonts文件夾,把字體放在fonts文件夾下,不然會報錯。

在css中引入字體

<style>@font-face {font-family: 'msyh';font-style: normal;font-weight: normal;src: url({{ storage_path('your_path/msyh.ttf') }}) format('truetype');}body {font-family: msyh, DejaVu Sans,sans-serif;}
</style>

注意:親測只有unicode編碼的中文,才能正常顯示,這也是我覺得這個PDF擴展不太好用的原因。

?

?

二、使用laravel-snappy擴展包

1、安裝依賴軟件

laravel-snappy擴展包需要Wkhtmltopdff的支持,所以先安裝Wkhtmltopdf

方法一:下載wkhtmltopdf安裝包

wkhtmltopdf下載地址http://www.softpedia.com/get/Office-tools/PDF/wkhtmltopdf.shtml

windows直接下載安裝就可以了,注意安裝到你知道的地方,這個路徑后面有用。

我的安裝在G:wk目錄下

在bin目錄下有wkhtmltoimage與wkhtmltopdf兩個依賴軟件

?

linux下載解壓完成后,要將文件移動到 /usr/local/bin 下

?

方法二:通過 composer 來安裝

以linux系統為例

復制代碼
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(uname -a 命令查看系統位數)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
復制代碼

?Linux 下使用該第三方插件需要幾個庫的支持?

apt-get install libXrender*
apt-get install libfontconfig*

?

1、安裝laravel-snappy擴展包

composer require barryvdh/laravel-snappy

?

2、將ServiceProvider添加到config / app.php中的providers數組

Barryvdh\Snappy\ServiceProvider::class,

?

3、添加facade到config / app.php中的aliases數組中

'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,

?

4、生成配置文件

php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"

?

此命令會在config/snappy.php生成配置文件

具體配置如下:

<?phpreturn array('pdf' => array('enabled' => true,
//        'binary'  => '/usr/local/bin/wkhtmltopdf',     //依賴軟件的路徑,linux默認在此目錄下'binary'  => 'G:\wk\wkhtmltopdf\bin\wkhtmltopdf','timeout' => false,'options' => array(),'env'     => array(),),'image' => array('enabled' => true,
//        'binary'  => '/usr/local/bin/wkhtmltoimage','binary'  => 'G:\wk\wkhtmltopdf\bin\wkhtmltoimage','timeout' => false,'options' => array(),'env'     => array(),),);

?

?5、使用 ( 與使用dompdf類似?)

先引入

use PDF;
use SnappyImage;

生成PDF文件

可以使用門面(facade)加載HTML字符串、文件或者視圖,然后使用stream()方法顯示在瀏覽器中、save()方法保存到文件或者download()方法下載。

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

也可以鏈式操作

return PDF::loadFile(public_path().'/myfile.html')->save('/path-to/my_stored_file.pdf')->stream('download.pdf');

可以更改方向(landscape將方向設為橫向,一般使用的都是豎向的,使用時注意一下)和紙張大小,并隱藏或顯示錯誤(默認情況下,調試打開時顯示錯誤)

PDF::loadHTML($html)->setPaper('a4', 'landscape')->setWarnings(false)->save('myfile.pdf')

生成圖片

$pdf = SnappyImage::loadView('pdf.invoice', $data);
return $pdf->download('invoice.image');

?

6、解決中英文亂碼問題 (linux)

可以將例如:宋體或其他中文字體添加到 /usr/share/fonts/

?

非常開心能夠將我的學習心得分享給大家?(?>?<?)?

轉載于:https://www.cnblogs.com/lishanlei/p/9300864.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/279885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/279885.shtml
英文地址,請注明出處:http://en.pswp.cn/news/279885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

「讀懂源碼系列2」我從 lodash 源碼中學到的幾個知識點

前言 上一篇文章 「前端面試題系列8」數組去重(10 種濃縮版) 的最后&#xff0c;簡單介紹了 lodash 中的數組去重方法 _.uniq&#xff0c;它可以實現我們日常工作中的去重需求&#xff0c;能夠去重 NaN&#xff0c;并保留 {...}。 今天要講的&#xff0c;是我從 _.uniq 的源碼實…

有小伙伴問:上位機用QT還是winform/wpf好?

楔子有小伙伴問&#xff1a;上位機用QT還是winform/wpf好&#xff1f;Qt是C寫的&#xff0c;跨平臺的UI框架&#xff0c;Winform/wpf是C#寫的不跨平臺的Windows上運行的UI框架。這兩個說到底是語言本質的爭論或者區別。優點Qt的優點是可以跨平臺運行UI界面&#xff0c;在Linux&…

使用jenkins進行項目的自動構建部署

jenkins 簡介 Jenkins是基于Java開發的一種持續集成工具&#xff0c;用于監控持續重復的工作&#xff0c;功能包括&#xff1a;持續的軟件版本發布/測試項目和監控外部調用執行的工作。 官網地址地址&#xff1a; https://jenkins.io 下載安裝啟動 CentOS 下用yum進行安裝啟動 …

如何刪除Apple Music中的連接功能

Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist’s page? Well, don’t worry, because getting “dis-Connected” is just a matter of changing a few simple settings in your iPhone or iPad running iOS 8.0 o…

python設計模式(十四):模板方法模式

定義一個算法或者流程&#xff0c;部分環節設計為外部可變&#xff0c;用類似于模板的思想來實例化一個實體&#xff0c;可以往模板中填充不同的內容&#xff1b;在模板思想下&#xff0c;實體的整體框架是確定的&#xff0c;他是一個模板&#xff0c;但是模板下內容可變&#…

FirstBird--項目流程

創建項目(英文路徑)—–img圖片文件創建窗體–設置大小(Basic—size–>320*480)—最大化功能禁用(Expert–>setResizable(false))添加面板–設置布局方式(set Layout—>AbsoluteLayout)自己創建面板 GameMain中將Jpanel1改為WinJpanel–創建對應類–>extends JPane…

PeeringDB初探

做網絡相關工作的&#xff0c;可能需要了解PeeringDB這個網站&#xff08;https://www.peeringdb.com)&#xff0c; 這里有大部分公開注冊的 ASN&#xff08;Autonomous System Number) 以及他們相互直接做Peering的信息&#xff0c;這也是這個網站名字的由來。據統計&#xff…

網站排障分析命令

系統連接狀態篇&#xff1a;1.查看TCP連接狀態netstat-nat|awk{print$6}|sort|uniq-c|sort-rnnetstat-n|awk/^tcp/{print$NF}|sort|uniq-c|sort-rnnetstat-ant|awk{print$NF}|grep-v[a-z]|sort|uniq-c2.查找請求數請20個IP&#xff08;常用于查找攻來源&#xff09;&#xff1a…

修復windows臉部識別_如何在Windows 10中改善面部識別

修復windows臉部識別If you have the right hardware, Windows 10 lets you unlock your computer with nothing but a smile. However, Microsoft’s facial recognition isn’t always spot-on. Here’s how to help Windows recognize you better. 如果您擁有合適的硬件&…

使用組策略推送exchange自簽名證書

一、導出證書打開證書頒發機構&#xff0c;在證書服務器上面選屬性&#xff0c;然后按照下圖進行導出操作。 在選擇格式時按照上圖標識選擇。 二、導入證書新建一個組策略&#xff0c;在計算機配置-策略-windows設置-安全設置-公鑰策略中選中“受信任的根證書頒發機構”并新建導…

基于.NetCore開發,前端支持Layui、React、Vue且前后端分離的快速開發框架

今天給大家推薦一個基于.Net Core開發的&#xff0c;前端框架支持Layui、React、Vue&#xff0c;并且前端和后端都支持代碼一鍵生成&#xff0c;用于項目開發&#xff0c;可極大的提升開發效率。項目簡介這是基于.net core的快速開發框架&#xff0c;前端框架可以根據自己需求選…

PHP常用工具方法集...

PHP常用工具方法集&#xff0c;更新時間 2018-7-14 <?php /*** 常用工具方法集* Author: zj*//** 工具總述 1.加密解密 2.生成隨機字符串 3.獲取文件擴展名&#xff08;后綴&#xff09; 4.文件大小格式化 5.替換標簽字符 6.列出目錄下的文件名 7.獲取當前頁面URL 8.讓瀏覽…

一題多解 面試題

最近在其他論壇上看到幾個網友的面試題&#xff0c;這些天&#xff0c;QQ群內的人都在討論怎么解答才最簡單&#xff0c;下面列出題目&#xff1a; 文件a&#xff1a; 文件b: a b c a b c b c a b c a c b a …

什么是Google On.Here,以及如何設置?

Google Wi-Fi is similar to other mesh Wi-Fi systems, but one big feature separates it from the pack: Google On.Here. Google Wi-Fi與其他網狀Wi-Fi系統相似&#xff0c;但其中一個重要功能將其與眾不同&#xff1a;Google On.Here。 發生什么了&#xff1f; (What Is O…

一張圖看懂 SQL 的各種 join 用法

原文鏈接https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 轉載于:https://www.cnblogs.com/xuchao0506/p/10559951.html

1Python全棧之路系列Web框架介紹

Python全棧之路系列之Web框架介紹 所有的語言Web框架本質其實就是起一個socket服務端,監聽一個端口,然后運行起來 Web框架包含兩部分,一部分是socket,另外一部分是業務的邏輯處理,根據請求的不同做不同的處理 Python的Web框架分成了兩類, 即包含socket也包含業務邏輯處理的(tor…

『 再看.NET7』數值類型

在C#中&#xff0c;有int16&#xff0c;用short來定義&#xff1b;有int32&#xff0c;用int定義&#xff1b;用int64&#xff0c;用long來定義。在.NET7中&#xff0c;添加了int128&#xff0c;和unint128&#xff0c;位數更大的整型。var i16 short.MaxValue; Console.Write…

獲取幫助命令

whatis 基于數據庫的查找,查找內容比較慢 優點&#xff1a;查找速度快 缺點&#xff1a;沒有實時性 [rootlocalhost ~]# whatis ls ls (1) - list directory contents ls (1p) - list directory contents 數據庫文件 Centos6:/…

筆記本電腦升級固態硬盤好嗎_如何升級筆記本電腦硬盤

筆記本電腦升級固態硬盤好嗎Upgrading your laptop’s hard drive is a great way to get some extra life out of an old machine (or resurrect a dead one). Read on as we walk you through the prep work, the installation, and the followup. 升級筆記本電腦的硬盤驅動器…

購物單

小明剛剛找到工作&#xff0c;老板人很好&#xff0c;只是老板夫人很愛購物。老板忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩&#xff0c;但又不好推辭。 這不&#xff0c;XX大促銷又來了&#xff01;老板夫人開出了長長的購物單&#xff0c;都是有打折優惠的。 …