使用 DOMPDF 生成 PDF,但我的自定义字体未显示

问题描述 投票:0回答:1
$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,但我的自定义字体没有显示。我希望字体能够拾取。为什么我的自定义字体没有显示?请帮我。请给我一个有效的例子。

php dompdf
1个回答
0
投票

不确定您使用的 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

© www.soinside.com 2019 - 2024. All rights reserved.