显示中文乱码是因为默认的字体不支持中文,引入一个支持中文的字体就可以了
//指定字体保存的目录
//支持加载远程图片 'isRemoteEnabled' => true
$dompdf = new Dompdf\Dompdf(['chroot' => 'C:/Windows/Fonts']);
//加载字体
$dompdf->getFontMetrics()
->registerFont(
[
'family' => 'Custom Font',
'style' => 'normal',
'weight' => 'normal'
],
'C:/Windows/Fonts/simhei.ttf'
);
$dompdf->loadHtml('<body>Chinese 中文</body><style>@page{margin:0;padding:0;}body{font-family: "Custom Font";}</style>');
$dompdf->setPaper('C7', 'landscape');
$dompdf->render();
$pdfContent = $dompdf->output();
//保存文件未DOMPDF.pdf
file_put_contents('./DOMPDF.pdf', $pdfContent);
指定PDF的宽高,现在html中设置body的宽和高,然后在php中设置生成的PDF的宽高
https://github.com/dompdf/dompdf/issues/1524
//渲染第一次,通过回到获取到渲染时的实际高度
$dompdf = new Dompdf\Dompdf(['chroot' => 'C:/Windows/Fonts','isRemoteEnabled' => true]);
//加载字体
$dompdf->getFontMetrics()
->registerFont(
[
'family' => 'Custom Font',
'style' => 'normal',
'weight' => 'normal'
],
'C:/Windows/Fonts/simhei.ttf'
);
$dompdf->loadHtml('<body>Chinese 中文</body><style>@page{margin:0;padding:0;}body{font-family: "Custom Font";}</style>');
$GLOBALS['bodyHeight'] = 0;
$dompdf->setCallbacks(array(
'myCallbacks' => array(
'event' => 'end_frame', 'f' => function ($infos) {
$frame = $infos->get_frame();
if (strtolower($frame->get_node()->nodeName) === "body") {
$padding_box = $frame->get_padding_box();
$GLOBALS['bodyHeight'] += $padding_box['h'];
}
}
)
));
$dompdf->setPaper([0,0,286,286], 'landscape');
$dompdf->loadHtml($html);
$dompdf->render();
unset($dompdf);
//再通过获取到的高度重新渲染一遍获得新的pdf
$dompdf = new Dompdf\Dompdf(['chroot' => 'C:/Windows/Fonts','isRemoteEnabled' => true]);
//加载字体
$dompdf->getFontMetrics()
->registerFont(
[
'family' => 'Custom Font',
'style' => 'normal',
'weight' => 'normal'
],
'C:/Windows/Fonts/simhei.ttf'
);
$dompdf->setPaper(array(0,0,286,$GLOBALS['bodyHeight']));
$dompdf->loadHtml('<body style="width:100mm;height:100mm">Chinese 中文</body><style>@page{margin:0;padding:0;}body{font-family: "Custom Font";}</style>');
$dompdf->render();
$dompdf->stream();
参考链接:
Dompdf and set different font-family
pdf加载远程图片
div居中问题处理,推荐方法三