Dompdf и кириллические шрифты

Небольшая статья о том, как использовать кириллические шрифты в dompdf.

Существует несколько библиотек для создания pdf-файла средствами php. Но в нашей разработке наиболее удобной показалась dompdf: она может одной командой конвертировать несложный html в pdf, что позволяет использовать обыкновенные файлы шаблонов для генерации pdf; понимает множество разных стилей в css; работает довольно шустро на файлах с адекватным объемом.

И все же подключить выбранный заказчиком шрифт оказалось не так-то просто.

Все шрифты в стандартной поставке библиотеки не содержат кириллических символов. Поэтому при попытке использовать один из них мы увидим в файле вместо букв знаки вопроса. Тем не менее, выход есть: как гласит официальная документация, с недавних пор в стандартную поставку было включено семейство шрифтов DejaVu с полной поддержкой UTF-8. Но что делать, если заказчик все же настаивает на том, чтобы использовать определенный шрифт?

  1. Прежде всего, обращаемся к данной статье.
  2. Находим в интернете ttf-файлы для всего семейства нашего шрифта, а именно: нормальное начертание, курсив, полужирное, полужирный курсив. И скачиваем их в наш проект.
  3. Скачиваем в наш проект файл load_font.php из репозитория.
  4. Указываем в третьей строке путь к автозагрузчику composer или самого dompdf.
  5. В восьмой строке указываем путь, по которому будут созданы файлы шрифтов, пригодные для использования в dompdf.
  6. Запускаем файл load_font.php в командной строке и прописываем название шрифта, которое будем использовать в нашем шаблоне, например, dompdf_arial, и пути к файлам шрифтов.
  7. Теперь в нашем html мы можем использовать запись вида
  8. Еще один важный момент: по умолчанию dompdf создает файлы шрифтов в папке внутри папки vendor. При использовании composer это не очень удобно потому, что при переносе между площадками файлы шрифтов будут теряться. Именно поэтому мы и сгенерировали наш файл внутри папки fonts. Следует учитывать это при дальнейшем использовании dompdf:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *