barryvdh / laravel-dompdf

A DOMPDF Wrapper for Laravel
MIT License
6.66k stars 967 forks source link

cyrillic text to PDF rendering as ? mark #875

Closed parmonov98 closed 2 years ago

parmonov98 commented 2 years ago

I'm using use Maatwebsite\Excel\Concerns\FromView; Interface

info: laravel: "laravel/framework": "^8.54", DOMPDF: "dompdf/dompdf": "^1.2", "maatwebsite/excel": "^3.1",

view file saved as UTF-8 image

Employees records are stored with utf8mb4_unicode_ci collation, table as well image image

using view method in EmployeeExport image

calling Export class from Controller image

I'm stuck here and don't know where to dig in. image

Could you please explain me why this's not showing Cyrilic letters correctly, but Latin letters are OK?

erikn69 commented 2 years ago

This package is only a Laravel wrapper for Dompdf HTML to PDF Converter, that is specified in the first line of the README.md

theqewk commented 9 months ago

Для тех кто хочет добавить свой шрифт кириллицы. Возможно кому-то пригодиться решение, оставлю тут.

Используемые версии: Версия DomPDF 2.0.4 Версия laravel-dompdf 2.0.1

  1. Берем файл load_font.php отсюда https://github.com/dompdf/utils/tree/master и кидаем в корень laravel
  2. В терминале запускаем php load_font.php - если видите текст справки - то скрипт работает.
  3. Далее, для добавления шрифта используем справку, там четко все написано, для примера пишу в терминале php load_font.php arial public/fonts/ArialMT.ttf public/fonts/Arial-BoldMT.ttf public/fonts/Arial-ItalicMT.ttf public/fonts/Arial-BoldItalicMT.ttf - где arial - название шрифта (если название с пробелом пишите в кавычках), далее по порядку перечисляем адреса, где находятся ваши шрифты. Первый ArialMT.ttf - это обычный шрифт, далее жирный, далее курсив, далее жирный-курсив. Последние три не обязательны - если они не поддерживаются. В моем примере шрифты лежат в public/fonts. Если после запуска видим ... Generating .... - то все ок
  4. После идем в vendor/dompdf/dompdf/lib/fonts находим файл installed-fonts.dist.json
  5. Добавляем в конец списка "arial": { "bold": "Arial-BoldMT", "bold_italic": "Arial-BoldItalicMT", "italic": "Arial-ItalicMT", "normal": "ArialMT" } - не забываем про запятые в json

Все! Идем в шаблон и добавляем в head <style> body { font-family: 'times new roman', sans-serif; } </style>

Всем удачи. ✌️😉