Если при создания документа вместо русских символов появляются ???, то это значит, что выбранный шрифт не содержит нужных символов.

Можно использовать встроенный шрифт DejaVu Sans или загрузить собственный, например, Arial или Roboto. Собственные шрифты нужно сконвертировать как минимум в 2 форматах — ttf и ufm и положить в папку dompdf/libs/fonts. После в файле dompdf/libs/fonts/dompdf_font_family_cache.dist.php прописать названия файлов.

Так можно вставить в проект любой шрифт, который поддерживает кириллицу, например, Roboto. Шрифт сконвертировать в ufm можно в любом онлайн редакторе.

Ошибка с tmp каталогом

На этом этапе сайт уже должен создавать документ с русскими символами. Но иногда он может выдавать ошибку связанную с тем, что dompdf не может получить доступ к tmp каталогу, где хранятся временные копии шрифтов перед загрузкой их в документ.

Fatal error: Uncaught Exception: Font not found in: /tmp/arial.ttf.tmp

Чтобы решить эту проблему настройте права доступа на эту папку на сервере или, если на вашем хостинге нет доступа к ней, создайте новую папку и пропишите новый путь при создании объекта класса. Не забудьте указать серверный путь, т.е. ссылка должна быть вида /var/www/...

use Dompdf\Dompdf;

$html = ''; // в эту переменную собираю весь документ
?>
	<html>
		<head>
		    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		</head>
	<body>
	    <p style="font-family: arial;">русский_russia_000111222</p>
	</body>
	</html>
<?
$html = ob_get_clean();


$d = new Dompdf(['tempDir'=>'/var/www/site.ru/tmp']); // создание объекта класса с новой tmp папкой
$d->load_html($html);
$d->setPaper('A4','portrait'); // настройки pdf
$d->render();
$d->stream(); // скачать pdf из браузера

Что еще можно сделать?

  • загрузить новый шрифт через load_font.php — этот файл нужно запускать через консоль
  • загрузить новый шрифт через ejaz.php — это скрипт аналог load_font.php, но работающий через веб интерфейс
  • загрузить новый шрифт через @font-face — но без ufm файлов русские символы все равно не отображались

Как проверить какой шрифт используется в pdf документе?

Проверить какой шрифт используется в документе можно открыв его в Adobe Illustrator или в посмотрев в свойствах документа в Adobe Reader.