$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.
Вот скрипт, работающий в DOMPDF версии 3.0.0 (работающий на php 8.2), как описано здесь:
«О шрифтах и кодировке символов»
<?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,
]);
В приведенном выше примере я создал/определил каталог «шрифты» в корневом каталоге страницы.
Вам также может потребоваться удалить предыдущие файлы в этом каталоге, например installed-fonts.json, чтобы предотвратить кеширование неработающих файлов.
Еще одна проблема в правиле использования шрифтов CSS: вы используете единицы измерения % — эти значения должны быть безразмерными, например: font-weight: 900.
Спасибо! Предоставленный сценарий сработал. Мой собственный шрифт сейчас набирает обороты. Очень ценю помощь.