composer require dompdf/dompdf
相关字体文档地址:
官方文档支持的字体说的很清楚了。不包含中文,但是可以自己引入字体来获得你需要的相关字体支持。接下来就自己下载一个字体吧。
下载字体网站:ufonts.com/
嫌速度慢,这里提供宋体字体下载:www.aliyundrive.com/s/rBZxcGjKyiQ
下载完毕后,就是加载字体了,文档里也说的很清楚。
两种方式:
load_font.php 文件下载地址:github.com/dompdf/utils
然后把上面下载的字体文件以及load_font.php
文件,放在你项目的根目录。假设你项目名为project
cd project
# 此命令会把字体文件加载到 vendor\dompdf\dompdf\lib\fonts 下
php load_font.php simsun simsun.ttf
然后编写代码进行HTML转PDF,下面示例的simsun
字体就是我们刚刚加载的。DejaVu Sans
字体是包自带加载的字体,这个字体支持希腊语等,我们一般用不着,可自行删除:
use Dompdf\Dompdf;
$html = <<<HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
* {
font-family: simsun, DejaVu Sans, sans-serif;
}
</style>
</head>
<body>
<p>献给母亲的爱</p>
</body>
</html>
HTML;
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
return $dompdf->stream();
use Dompdf\Dompdf;
$html = <<<HTML
<html>
<head>
<style>
@font-face {
font-family: 'simsun';
font-style: normal;
font-weight: normal;
src: url(http://example.com/fonts/simsun.ttf) format('truetype');
}
*{ font-family: simsun, DejaVu Sans, sans-serif;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<p>献给母亲的爱</p>
</body>
</html>
HTML;
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
$dompdf->stream();
如果你是使用的laravel包barryvdh/laravel-dompdf
遇到到以下几个问题:
加载了中文字体后,生成的PDF文件过大。原因是barryvdh/laravel-dompdf
把isFontSubsettingEnabled
默认设置为false
。
有两种方式修改:
配置文件:发布此laravel包的配置文件,在配置文件中修改enable_font_subsetting
项,修改为true
。
代码修改:
//此为 barryvdh/laravel-dompdf 包的代码
$dompdf->setOption('isFontSubsettingEnabled', true);
如果你使用的是dompdf/dompdf
原生包,则无需关心,因为原生包此配置项默认为true
。此原生包v2
是默认为true
,v1
不清楚
参考资料:github.com/dompdf/dompdf/issues/19...
如果你是使用 load_font.php
方式加载字体,你需要修改font_dir
选项。因为barryvdh/laravel-dompdf
包修改了此选项,将不指向原来的路径。当然你也可以不修改,把字体相关文件放入barryvdh/laravel-dompdf
包font_dir
选项默认文件路径
有两种方式修改:
配置文件:发布此laravel包的配置文件,在配置文件中修改font_dir
项,修改为base_path('vendor/dompdf/dompdf/lib/fonts')
。
代码修改:
//此为 barryvdh/laravel-dompdf 包的代码
$dompdf->setOption('font_dir', base_path('vendor/dompdf/dompdf/lib/fonts'));
如果觉得博客文章对您有帮助,异或土豪有钱任性,可以通过以下扫码向我捐助。也可以动动手指,帮我分享和传播。您的肯定,是我不懈努力的动力!感谢各位亲~