$fontDir = __DIR__ . '/fonts';
$customFont = $fontDir . '/COOPBL.ttf';
$fontMetrics = $dompdf->getFontMetrics();
$customFontFamily = $fontMetrics->getFont('Cooper Black', 'bold', $customFont);
$html = "
<!DOCTYPE html>
<style>
@font-face {
font-family: 'Cooper Black';
src: url('$customFont') format('truetype');
font-weight: 900%;
font-style: normal;
}
.coop {
font-family: 'Cooper Black';
}
我正在使用 dompdf 生成 pdf,但我的自定义字体没有显示。我希望字体能够拾取。为什么我的自定义字体没有显示?请帮我。请给我一个有效的例子。
不确定您使用的 API 方法是否仍适用于您当前版本的 DOMPdf。
这是在 3.0.0 版本中工作的脚本,如下所述:“关于字体和字符编码”
<?php
require_once 'dompdf/autoload.inc.php';
// reference the Dompdf namespace
use Dompdf\Dompdf;
// define fontDir/tmp directory
$fontDir = __DIR__ . '/fonts';
// instantiate and use the dompdf class
$dompdf = new Dompdf([
'fontDir' => $fontDir,
'fontCache' => $fontDir,
'tempDir' => $fontDir,
'chroot' => $fontDir,
]);
$fontRegular = 'fonts/Poppins-Regular.ttf';
$fontBlack = 'fonts/Poppins-Black.ttf';
//create html
$html = "
<!DOCTYPE html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<style>
@font-face {
font-family: 'Cooper';
src: url('$fontRegular') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Cooper';
src: url('$fontBlack') format('truetype');
font-weight: 900;
font-style: normal;
}
body{
font-family: 'Cooper';
font-weight: 400;
color:red;
}
h1{
font-family: 'Cooper';
font-weight: 900;
color:#000;
}
</style>
</head>
<body>
<h1>Hamburglefontiv <br>123456</h1>
<p>Hamburglefontiv <br>123456</p>
</body>
</html>";
echo($html);
// process HTML
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
// Render the HTML as PDF
$dompdf->render();
$output = $dompdf->output();
file_put_contents('test.pdf', $output);
?>
初始化 DOMPDF 时指定临时目录很重要:
$fontDir = __DIR__ . '/fonts';
// instantiate and use the dompdf class
$dompdf = new Dompdf([
'fontDir' => $fontDir,
'fontCache' => $fontDir,
'tempDir' => $fontDir,
'chroot' => $fontDir,
]);
在上面的示例中,我在页面的根目录中创建/定义了一个“fonts”目录。
您可能还需要删除此目录中以前的文件,例如
installed-fonts.json
,以防止缓存无效文件。
您使用
%
单位的 CSS 字体规则中的另一个问题 - 这些值需要无单位,如下所示:font-weight: 900
。