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

<?php

namespace 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中文字体显示问题的更多相关文章

  1. html lang="zh-cn"解决Mac版Firefox中文字体显示问题

    这两天在Mac下被Firefox的中文字体显示问题所困扰.在Firefox中将Sans-serif字体设置为SimSun-ExtB(新宋体)或英文字体(这时会用Mac默认中文字体),如下图: 浏览园子 ...

  2. 关于JAVA应用中文字体显示小方框的问题解决

    最近碰到linux下jboss应用中中文字体显示为小方框: “在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts目录下的字体.链接或复制宋体或微软雅黑 ...

  3. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录

    解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小]   我是先安装了Ubuntu 12.04 Server,然后 ...

  4. php导出pdf,dompdf中文字体乱码解决办法(特别是代码迁移引起的乱码)

    dompdf\lib\fonts\dompdf_font_family_cache.php记住这个文件里面存放的是字体生成的缓存,迁移时如果覆盖了这个文件会导致乱码而且很难找到出错的地方,相信我... ...

  5. matplotlib在MAC系统下中文字体显示问题

    最近想把部分python数据分析的代码从win系统迁移到MAC上,有部分图片上涉及中文显示,迁移到MAC上warning: UserWarning: findfont: Font family [u' ...

  6. 关于Matlab在绘图时中文字体显示不一致的问题

    我的运行环境: OS: Win10 教育版 64-bit Matlab版本:Matlab 2017a  64-bit 在使用Matlab绘图时,而横坐标轴.纵坐标轴.标题有汉字时,会发现在GUI的显示 ...

  7. 解决Android版Firefox字体显示过大的问题

    在用Android版Firefox查看博客园首页发现中间区域的字体显示非常大,开始以为是首页css对移动版浏览器支持不好. 后来发现原来这是Firefox for Android的知名bug: Tha ...

  8. deepin 下安装goland中文字体显示全是方块

    下载中文字体 apt-get install ttf-arphic-uming xfonts-intl-chinese 替换goland的汉化包,两个jar包.https://blog.csdn.ne ...

  9. wine的中文字体显示

    从1.1.4开始wine的界面就已经支持中文了,但是对于软件中的中文支持并不太好,主要原因.还是字体...Let's go 首先,copy一下字体:把simsun.ttc (即宋体)复制到 ~/.wi ...

随机推荐

  1. T-SQL 临时表、表变量、UNION

    T-SQL 临时表.表变量.UNION 这次看一下临时表,表变量和Union命令方面是否可以被优化呢? 阅读导航 一.临时表和表变量 二.本次的另一个重头戏UNION 命令 一.临时表和表变量 很多数 ...

  2. CENTOS下Python 升级后YUM无法使用的解决办法

    Python有很多实用的工具,安装依赖python版本较高,升级Python后导致yum无法使用. 原因: 系统自带的yum依赖Python老版本,升级后不兼容 解决办法: 1. 列出所有版本,确定老 ...

  3. 如何Windows系统中搭建php环境

    PHP介绍: PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTM ...

  4. kuryr环境搭建

    前言 kuryr是docker和neutron结合的一个项目.docker自1.9之后,支持libnetwork的remote的driver,使得可以通过json rpc调用,为docker提供网络. ...

  5. MySQL SET TRANSACTION 设置事务隔离级别

    1. 首先说一下autocommit 默认情况下autocommit的开关是打开的,也就是ON,查看方法 方法1. select @@[global/session].autocommit; 方法2. ...

  6. Java8:使用Lambda表达式增强版Comparator排序

    学习路上的自我记录-------路好长,就问你慌不慌,大声港,不慌.----jstarseven. 实体类: package com.server.model; /** * Created by js ...

  7. C# 关于委托的小例子

    本例子是一个关于委托的小例子[猫叫,狗跳,人喊]. 委托是C#开发中一个非常重要的概念,理解起来也和常规的方法不同,但一旦理解清楚,就可以信手拈来,随处可用. 委托是对方法的抽象.它存储的就是一系列具 ...

  8. Redmine数据库备份及搬家

    Bitnami Redmine的备份分2种方式: 1.导出数据库 2.整个目录搬家 不管是哪种都想停掉服务,redmine相关的服务有以下5个: redmineApache redmineMySQL ...

  9. asp.net小技巧:保留password模式文本框textbox内的数据不丢失。

    在asp.net 2.0环境下,使用textbox,提交到服务器再传回,如果textbox是password模式的,那么textbox内的密码(星号.圆点),就没有了! 一个可行的做法是 : prot ...

  10. java加解密

    换工作中,把以前学的知识,整理整理.能否得到一份好的薪资且满意的工作,然后赢取白富美,走向人生的巅峰,就靠它了.哈哈. 对称加密:DES, AES DES (数据加密算法) : 明文按64位进行分组, ...