Использование DOMPDF для создания PDF-файла, но мой собственный шрифт не распознается

$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 в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не уверен, что используемые вами методы 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.

Спасибо! Предоставленный сценарий сработал. Мой собственный шрифт сейчас набирает обороты. Очень ценю помощь.

Zeus Devs 22.05.2024 01:00

Другие вопросы по теме