日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决larave-dompdf中文字体显示问题

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决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

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

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

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

總結

以上是生活随笔為你收集整理的解决larave-dompdf中文字体显示问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。