Как установить кодировку текста из бд в ларавел (DomPdf)?

Рейтинг: 0Ответов: 1Опубликовано: 17.04.2023

Генерирую pdf-документ с помощью Dompdf в ларавел 9. В шаблоне документа для генерации Pdf пишу такой код.

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
        * {
            font-family: "DejaVu Sans", sans-serif;
        }
    </style>
</head>
<body>
<h1 class="intro__title title-main">{{ $house[0]->title }}</h1>
                            <div class="intro__row">
                                <div class="intro__col">
                                   Описание:<p class="intro__item"><span>{{ $house[0]->description_metro }}</span></p>
                                        Округ:<p class="intro__item"><span>{{ $house[0]->okrug }}</span></p>     
                                </div>
</body>
</html>

В итоге получается, что русским текстом выводятся заголовки, вроде "Описание", "Округ" и вопросами данные из приходящие из контроллера из бд - т.е. объект $house. В .htaaccess прописана кодировка utf-8. В заголовке html тоже прописан utf-8. Почему выводятся вопросами генерируемый текст?

Привожу код контроллера на всякий случай:

 public function generate_PDF(House $house) {
        $arr_house = ['0' => $house];
        view()->share('house',$arr_house);
        $pdf = PDF::loadView('house.pdf', $arr_house);
        $id = $house->id;
        return $pdf->download("pdf_file_".$id.".pdf");
    }

Ответы

▲ 0

Шрифты в папке DomPdf (например /vendor/dompdf/dompdf/lib/fonts) без поддержки кириллицы.

Надо скачать нужный шрифт (DejaVuSans.ttf) отсюда https://github.com/dompdf/dompdf/tree/master/lib/fonts и загрузить в папку /dompdf/lib/fonts/. Если он уже есть, заменяем.