解決larave-dompdf中文字體顯示問題

0、使用MPDF

dompdf個人感覺沒有那么好用,最終的生產環境使用的是MPDF,github上有文檔說明。
如果你堅持使用,下面是解決辦法。可以明確的說,中文亂碼是可以解決的。

1、安裝laravel-dompdf依賴。

Packagist:https://packagist.org/packages/barryvdh/laravel-dompdf

composer require barryvdh/laravel-dompdf

2、配置config/app.php

// add the ServiceProvider to the providers array in config/app.php
// 添加到providers數組下
Barryvdh\DomPDF\ServiceProvider::class,// Add this to your facades
// 添加到aliases數組下
'PDF' => Barryvdh\DomPDF\Facade::class,

3、創建view

  下載中文字體,這里我使用了msyh.ttf(微軟雅黑)。

? ? ? 在public目錄下創建fonts目錄并把下載好的字體復制到該目錄下。

? ? ??

? ? ? 創建view:

<!DOCTYPE html>
<html><head><title>測試pdf</title><style>@font-face {font-family: 'msyh';font-style: normal;font-weight: normal;src: url(http://www.testpdf.com/fonts/msyh.ttf) format('truetype');
            }html, body {  height: 100%;  }body {  margin: 0;  padding: 0;  width: 100%;/*display: table;  */font-weight: 100;  font-family: 'msyh';  }.container {  text-align: center;/*display: table-cell; */vertical-align: middle;  }.content {  text-align: center;  display: inline-block;  }.title {  font-size: 96px;  }</style></head><body><div class="container"><div class="content"><div class="title">xiao{{$name}}</div></div></div></body>
</html>

注意:引入字體,使用@font-face,并通過【font-family: 'msyh';】應用到這個body上。

@font-face {font-family: 'msyh';font-style: normal;font-weight: normal;src: url(http://www.testpdf.com/fonts/msyh.ttf) format('truetype');}

?

?4、創建controller

<?phpnamespace App\Http\Controllers\Api;use Illuminate\Http\Request;use App\Http\Requests;
use App\Http\Controllers\Controller;use PDF;class PdfController extends Controller
{/*** 測試下載pdf,使用loadView()方法* @return mixed*/public function testDownloadPdf(){$data = array('name'=>'寶bao');$pdf = PDF::loadView('invoice', $data);return $pdf->download('invoice.pdf');}/*** 測試web頁面展示pdf,使用loadHTML()方法加載* @return mixed*/public function testStreamPdf(){$html = '<html><head><title>Laravel</title><meta http-equiv=\'Content-Type\' content=\'text/html; charset=utf-8\'/><style>body{  font-family: \'msyh\';  }  @font-face {  font-family: \'msyh\';  font-style: normal;  font-weight: normal;  src: url(http://www.testenv.com/fonts/msyh.ttf) format(\'truetype\');  }</style></head><body><div class=\'container\'><div class=\'content\'><p style=\'font-family: msyh, DejaVu Sans,sans-serif;\'>獻給母親的愛</p><div style=\'font-family: msyh, DejaVu Sans,sans-serif;\' class=\'title\'>Laravel 5中文測試</div><div  class=\'title\'>測試三</div></div></div></body></html>';$pdf = PDF::loadHTML($html);return $pdf->stream();}}

?

問題1:

ErrorException in AdobeFontMetrics.php line 45:
fopen(D:\workspace\php\testpdf\storage\fonts/\b0a260823b52b90d6a99ba3a53e67e9f.ufm): failed to open stream: No such file or directory

解決方法:在storage下創建fonts文件夾

?

問題2:

FatalThrowableError in TableCell.php line 31:
Call to a member function get_cellmap() on null

解決方法:

更多解釋請查看:https://github.com/barryvdh/laravel-dompdf/issues/137

// 注釋掉view中的這一行代碼
display: table-cell;

?

參考資料:https://github.com/dompdf/dompdf/wiki/UnicodeHowTo

?

有問題可加QQ群詢問【php/laravel技術交流群】:576269252

--------------------------------------

聲明: 原創文章,未經允許,禁止轉載!

--------------------------------------

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

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

相關文章

mfc程序轉化為qt_小峰的QT學習筆記

我的專業是輸電線路&#xff0c;上個學期&#xff0c;我們開了一門架空線路設計基礎的課&#xff0c;當時有一個大作業是計算線路的比載&#xff0c;臨界檔距&#xff0c;弧垂最低點和安裝曲線。恰逢一門結課考試結束&#xff0c;大作業ddl快到&#xff0c;我和另外兩個同專業的…

MS SQL的存儲過程

-- -- Author: -- Create date: 2016-07-01 -- Description: 注冊信息 -- ALTER PROCEDURE [dbo].[sp_MebUser_Register]( UserType INT, MobileNumber VARCHAR(11), MobileCode VARCHAR(50), LoginPwd VARCHAR(50), PayPwd VARCHAR(50), PlateNumber VARCHAR(20), UserTr…

mysql 中 all any some 用法

-- 建表語句 CREATE TABLE score(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),SUBJECT VARCHAR(20),score INT);-- 添加數據 INSERT INTO score VALUES (NULL,張三,語文,81), (NULL,張三,數學,75), (NULL,李四,語文,76), (NULL,李四,數學,90), (NULL,王五,語文,81), (…

REST framework 用戶認證源碼

REST 用戶認證源碼 在Django中&#xff0c;從URL調度器中過來的HTTPRequest會傳遞給disatch(),使用REST后也一樣 # REST的dispatch def dispatch(self, request, *args, **kwargs):""".dispatch() is pretty much the same as Djangos regular dispatch,but w…

scrapyd部署_如何通過 Scrapyd + ScrapydWeb 簡單高效地部署和監控分布式爬蟲項目

來自 Scrapy 官方賬號的推薦需求分析初級用戶&#xff1a;只有一臺開發主機能夠通過 Scrapyd-client 打包和部署 Scrapy 爬蟲項目&#xff0c;以及通過 Scrapyd JSON API 來控制爬蟲&#xff0c;感覺 命令行操作太麻煩 &#xff0c;希望能夠通過瀏覽器直接部署和運行項目專業用…

最長上升子序列 (LIS算法(nlong(n)))

設 A[t]表示序列中的第t個數&#xff0c;F[t]表示從1到t這一段中以t結尾的最長上升子序列的長度&#xff0c;初始時設F [t] 0(t 1, 2, ..., len(A))。則有動態規劃方程&#xff1a;F[t] max{1, F[j] 1} (j 1, 2, ..., t - 1, 且A[j] < A[t])。 現在&#xff0c;我們仔細…

牛頓插值--python實現

from tabulate import tabulate import sympy""" 牛頓插值法 """class NewtonInterpolation:def __init__(self, x: list, y: list):self.Xi = xself

css搖曳的_HTML5+CSS3實現樹被風吹動搖晃

1新建html文檔。2書寫hmtl代碼。3書寫css代碼。.trunk, .trunk div { background: #136086; width: 100px; height: 10px; position: absolute; left: 50%; top: 70%; margin-left: -10px; -webkit-animation-name: rot; animation-name: rot; -webkit-animation-duration: 2.0…

素數路(prime)

素數路(prime) 題目描述 已知一個四位的素數&#xff0c;要求每次修改其中的一位&#xff0c;并且要保證修改的結果還是一個素數&#xff0c;還不能出現前導零。你要找到一個修改數最少的方案&#xff0c;得到我們所需要的素數。 例如把1033變到8179&#xff0c;這里是一個最短…

python多線程單核_002_Python多線程相當于單核多線程的論證

很多人都說python多線程是假的多線程!下面進行論證解釋:一、我們先明確一個概念&#xff0c;全局解釋器鎖(GIL)Python代碼的執行由Python虛擬機(解釋器)來控制。Python在設計之初就考慮要在主循環中&#xff0c;同時只有一個線程在執行&#xff0c;就像單CPU的系統中運行多個進…

detail:JSON parse error - Expecting value: line 1 column 1 (char 0)

detail":"JSON parse error - Expecting value: line 1 column 1 (char 0) 在調用接口時返回400錯誤&#xff0c;詳情是 {detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"}原因是傳送數據的格式有問題&#xff0c;不要使用…

【IDEA 2016】intellij idea tomcat jsp 熱部署

剛開始用IDEA&#xff0c;落伍的我&#xff0c;只是覺得IDEA好看。可以換界面。想法如此的low。 真是不太會用啊&#xff0c;弄好了tomcat。程序啟動竟然改動一下就要重啟&#xff0c;JSP頁面也一樣。 IDEA可以配置熱部署&#xff0c;打開tomcat配置頁面&#xff0c;將紅框處&a…

C# where用法解析

where 子句用于指定類型約束&#xff0c;這些約束可以作為泛型聲明中定義的類型參數的變量。1.接口約束。例如&#xff0c;可以聲明一個泛型類 MyGenericClass&#xff0c;這樣&#xff0c;類型參數 T 就可以實現 IComparable<T> 接口&#xff1a;public class MyGeneric…

ubuntu進入桌面自動啟動腳本_在 Ubuntu 下開機自啟動自己的 QT 程序而不啟動 Ubuntu 的桌面...

1. /etc/profile 方式實現這個功能&#xff0c;要完成兩步&#xff1a;1、系統設置-> 用戶賬戶-> 點擊我的賬戶-> 點擊右上角的解鎖-> 打開自動登錄-> 點擊右上角的鎖定-> 退出系統設置2、在 /etc/profile 文件的開頭添加執行 qt 程序的命令。如&#xff1a;…

Java obj與JSON互轉(jackson)

JSON 解析 常見的json解析器&#xff1a; jsonlibGson(谷歌)fastjson(阿里)jackson(Spring內置) jackson 依賴jar包 jackson-annotations/jackson-core/jackson-databind/ 官網下載地址 1. Java對象轉JSON 1.1 核心對象 ObjectMapper 1.2常用轉換方法 writeValue(參…

如何制作一個簡單的APP應用軟件?

如今隨著移動智能手機的普及&#xff0c;讓APP的市場一片繁榮&#xff0c;現在市場上的APP數量數不勝數&#xff0c;對于APP開發的我們很多外行人也許認為&#xff0c;開發APP是不是特別難&#xff0c;是不是只有資歷很高的程序員才能夠完成這個任務&#xff0c;或者說要想開發…

I/O重定向

每個進程都至少有3個信息&#xff1a;“標準輸入”stdin、“標準輸出”stdout、和“標準出錯”stderr。標準輸入通常來自鍵盤&#xff0c;標準輸出和標準錯誤輸出通常被發往屏幕&#xff08;并不會保存在磁盤文件中&#xff09;。有些時候&#xff0c;需要從文件讀取輸入&#…

java 自動裝拆箱

title: “java 自動裝拆箱” tags: Java 將基本數據類型封裝成對象的過程叫做裝箱&#xff08;boxing&#xff09;&#xff0c;反之基本數據類型對應的包裝類轉換為基本數據類型的過程叫做拆箱&#xff08;unboxing&#xff09;; 基本數據類型與其他對象的區別 基本數據類型 …

設計模式11---組合模式(Composite Pattern)

一、組合模式定義 將對象組合成樹形結構以表示“部分-整體”的層次結構&#xff0c;使得用戶對單個對象和組合對象的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compos…

Linux 多核下綁定硬件中斷到不同 CPU(IRQ Affinity)

轉載 - Linux 多核下綁定硬件中斷到不同 CPU&#xff08;IRQ Affinity&#xff09; 作者 digoal 日期 2016-11-20 標簽 Linux , IRQ , 中斷 , CPU親和 , 綁定中斷處理CPU 背景 原文 http://www.vpsee.com/2010/07/load-balancing-with-irq-smp-affinity/ 原文 硬件中斷發生頻繁…