失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > dompdf 这么做就可以支持中文了

dompdf 这么做就可以支持中文了

时间:2021-12-25 08:19:07

相关推荐

dompdf 这么做就可以支持中文了

最近在研究如何用PHP生成pdf文档,首先测试了tcpdf,但是它对html的样式支持不尽人意最后放弃了。

dompdf进入了我的视野,马上安装体验了一番

composer require dompdf/dompdf

现在假定你的环境是支持composer的

/*** 生成dompdf*/public function create_dompdf(){$dompdf = new Dompdf();$html = View::fetch('reportv2');$dompdf->loadHtml($html,'UTF-8');$dompdf->setPaper('A4','portrait');$dompdf->render();$filename = 'dom_'. date('His') .'.pdf';$dompdf->stream($filename);}

上述是调用Dompdf的代码,比较简单,参照文档即可。运行结果如下

现在关键问题来了,如何正常显示中文呢

参考了此文章,并在此基础上进行了实际操作验证。

解决Dompdf中文乱码问题/hwhsong/article/details/88579332第一步:下载Dompdf的工具包

该工具包的Git地址为:/dompdf/utils。

下载完成后,解压,复制其中的load_font.php文件到项目下的vendor/dompdf/dompdf目录下,与lib和src目录同级。

第二步:修改load_font.php文件

因为把该文件直接复制放在了dompdf目录下,因此需要修改加载autoloader的路径

// 1. [Required] Point to the composer or dompdf autoloader//require_once "vendor/autoload.php";require_once dirname(dirname(__DIR__)) . '/autoload.php';

第三步:下载字体文件

可以使用任意支持中文的字体文件,这里以微软雅黑(msyh)为例,该字体涉及版权,需要自行搜索下载,下载完成后,我们把该字体文件 msyh.ttf 直接放在load_font.php同一目录

第四步:安装字体文件

在放置load_font.php的dompdf目录下,使用系统命令行工具执行该文件,具体命令如下:

php load_font.php msyh msyh.ttf

注意:命令中的字体名称msyh不要加引号,否则后续将不可用。执行结果参考:

第五步:检查字体是否安装成功

如果字体安装成功,则可以在项目的vendor/dompdf/dompdf/lib/fonts目录中看到新生成的 msyh.ttf及 msyh.ufm文件。并且可以在该目录下的 installed-fonts.json 文件中看到如下相关信息:

{"msyh": {"normal": "msyh_normal_adfabab12a9c7844decdb414a59f4a61","bold": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh","italic": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh","bold_italic": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh"}}

使用中文字体:

关键的一句:body {font-family: "msyh";},指定字体名称

<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title></title><link href="layui/css/layui.css" rel="stylesheet"><style>body {font-family: "msyh";}</style></head><body><div class="layui-container"><div class="layui-row"><div class="layui-col-md12"><h3>你好,中国!Hello China! </h3></div></div></div></body></html>

看看效果吧!

然而这仅仅是开始,后面还遇到了好多问题。

dompdf中文乱码、换行解决方案/kelinfeng16/article/details/84135308

如果觉得《dompdf 这么做就可以支持中文了》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。