-
Vadim TsukanovРазработчик
-
Дата публикации07.09.2021
-
Категорияphp
Задача:Обучить кириллице библиотеку DomPDF
Шикарная библиотека — DomPdf. Позволяет генерировать PDF из html, однако она не умеет работать с кириллицей из коробки.
Целиком и полностью проблема в шрифтах. Так как предустановленные шрифты просто не имеют символов кириллицы.
Есть несколько вариантов, как обучить библиотеку кириллице:
- Взять шрифт и сгенерировать все форматы, потом прописать все необходимое в библиотеке и использовать свой собственный шрифт. Такой подход является правильным и «взрослым». Но мы пойдем другим путем.
- Скинуть шрифты, с поддержкой кириллицы
Мы пойдем вторым путем, т.к. первый понятен и кто в состоянии прочитать stackoverflow — тот сам разберется. Сейчас наша цель просто и быстро подключить обычный Times New Roman с кириллицей.
- Скачиваем шрифты с поддержкой русского
- Заменяем шрифты в папке DomPdf. У меня это — /vendor/dompdf/dompdf/lib/fonts
- Удаляем dompdf_font_family_cache.dist.php — он сгенерируется сам, при первом обращении к либе
И вызываем со следующими настройками:
$options = new Options();
$options->set('defaultFont', 'times');
$dompdf = new Dompdf($options);
Данный метод сработал у меня, кроме 1 шрифта мне и не нужно ничего.
судя по ошибке, не находит другой шрифт.
После замены шрифтов получаю ошибку 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"
у меня есть только dompdf_font_family_cache.dist.json и при удалении получаю ошибку. Почему то способ не сработал для меня. Ну или же такую ошибку получаю Unable to find a suitable font replacement for: 'times'
По всей видимости проблема с окружением. Не установлены либы php. Необходимо просмотреть необходимые для domPdf и глянуть, чего нет на вирт хостинге
На локальном сервере заработало, а вот на хостинге нет, вместо знаков вопроса стали отображаться квадраты с непонятным набором цифр