最近在研究如何用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 这么做就可以支持中文了》对你有帮助,请点赞、收藏,并留下你的观点哦!