#laravel #pdf #laravel-blade
#laravel #PDF #laravel-blade
Вопрос:
Я пытаюсь преобразовать файл blade в формат PDF.
Я использовал barryvhd/laravel-dompdf
для преобразования в PDF, но DOMPdf
не поддерживает японский шрифт, все японские символы отображаются в ?
символ. Мой php
код:
$pdf = PDF::loadView('pdf/presaleorder', ['order' => $order]);
$pdf->save('test.pdf');
Мой blade
файл:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>画像</title>
</head>
<body>
<div>
<p>
ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク
グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ
ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ
バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ
ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ
ヰ ヱ ヲ ン ヴ ヵ ヶ ヷ ヸ ヹ ヺ ・ ー ヽ ヾ ヿ
</p>
</div>
</body>
</body>
</html>
Однако я нашел сообщение, которое решило эту проблему. Я добавил <style>
в header
<style>
@import url('https://fonts.googleapis.com/css?family=Roboto');
body {
font-family: 'Roboto', sans-serif;
}
</style>
Теперь все символы отображаются следующим образом:
Но когда я скопировал текст в pdf
файл, я получил это ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ
Интересно, это из-за barryvhd/laravel-dompdf
или PDF Reader вызывает это. Я использую Adobe Acrobat Reader DC
версию 2020.012.20043
и установил font-pack
.
У кого-нибудь есть решение?
Ответ №1:
Наборы символов
Вам необходимо определить набор символов в мета-теге в HTML-документе.
<meta charset="UTF-8" />
Комментарии:
1. пытался добавить
<meta charset="UTF-8" />
, но это не работает.
Ответ №2:
Наконец, я могу решить эту проблему. Это потому, что Roboto
шрифт не поддерживает японский. Вместо этого используйте шрифты, которые поддерживают японский язык. Я пробовал MS Mincho
, Hiragano Sans
и это сработало.
Обратите внимание, что dompdf
поддерживается только шрифт с форматом .ttf
, поэтому другой формат работать не будет.