Обучаем domPDF кириллице

  • Vadim Tsukanov
    Разработчик
  • Дата публикации
    07.09.2021
  • Категория
    php
dompdf на русском
Задача:Обучить кириллице библиотеку DomPDF

Шикарная библиотека — DomPdf. Позволяет генерировать PDF из html, однако она не умеет работать с кириллицей из коробки.

Целиком и полностью проблема в шрифтах. Так как предустановленные шрифты просто не имеют символов кириллицы.

Есть несколько вариантов, как обучить библиотеку кириллице:

  1. Взять шрифт и сгенерировать все форматы, потом прописать все необходимое в библиотеке и использовать свой собственный шрифт. Такой подход является правильным и «взрослым». Но мы пойдем другим путем.
  2. Скинуть шрифты, с поддержкой кириллицы

Мы пойдем вторым путем, т.к. первый понятен и кто в состоянии прочитать stackoverflow — тот сам разберется. Сейчас наша цель просто и быстро подключить обычный Times New Roman с кириллицей.

  1. Скачиваем шрифты с поддержкой русского
  2. Заменяем шрифты в папке DomPdf. У меня это — /vendor/dompdf/dompdf/lib/fonts
  3. Удаляем dompdf_font_family_cache.dist.php — он сгенерируется сам, при первом обращении к либе

И вызываем со следующими настройками:

$options = new Options();
$options->set('defaultFont', 'times');
$dompdf = new Dompdf($options);

Данный метод сработал у меня, кроме 1 шрифта мне и не нужно ничего.

5 Комментариев
  • muzanaka
    2024-05-23 16:05:45

    судя по ошибке, не находит другой шрифт.

  • Вячеслав
    2024-05-21 19:38:16

    После замены шрифтов получаю ошибку Warning: file_get_contents(/var/www/test.local/vendor/dompdf/dompdf/lib/fonts/installed-fonts.dist.json): Failed to open stream: No such file or directory in /var/www/test.local/vendor/dompdf/dompdf/src/FontMetrics.php on line 117 Fatal error: Uncaught Dompdf\Exception: Error loading index.html: Permission denied. The file could not be found under the paths specified by Options::chroot. in /var/www/test.local/vendor/dompdf/dompdf/src/Dompdf.php:366 Stack trace: #0 /var/www/test.local/vendor/dompdf/dompdf/src/Dompdf.php(326): Dompdf\Dompdf->loadHtmlFile() #1 /var/www/test.local/pdf/index.php(10): Dompdf\Dompdf->load_html_file() #2 {main} thrown in /var/www/test.local/vendor/dompdf/dompdf/src/Dompdf.php on line 366 Такого файла не нашел dompdf_font_family_cache.dist.php версия пакета "dompdf/dompdf": "^3.0"

  • Андрей
    2024-05-14 22:37:41

    у меня есть только dompdf_font_family_cache.dist.json и при удалении получаю ошибку. Почему то способ не сработал для меня. Ну или же такую ошибку получаю Unable to find a suitable font replacement for: 'times'

  • muzanaka
    2021-11-17 14:41:55

    По всей видимости проблема с окружением. Не установлены либы php. Необходимо просмотреть необходимые для domPdf и глянуть, чего нет на вирт хостинге

  • Вячеслав
    2021-11-17 10:30:08

    На локальном сервере заработало, а вот на хостинге нет, вместо знаков вопроса стали отображаться квадраты с непонятным набором цифр

Оформить заказ в Devstages