Я пытаюсь создать PDF, который будет содержать китайские иероглифы, используя dompdf.
Вот мой код:
require('dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
mb_internal_encoding('UTF-8');
def("DOMPDF_UNICODE_ENABLED", true);
$html = ' <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
*{ font-family: DejaVu Sans, font-size: 12px;}
</style> </head> <body>
忠烈祠
</body>
</html>';
$dompdf->load_html($html);
$dompdf->render();
$output = $dompdf->output();
$filename = 'a.pdf';
$path = $filename;
file_put_contents($path, $output);
Проблема в том, что сгенерированный PDF показывает только квадраты, когда я открываю его с помощью Chrome или Adobe Reader, но в Mozilla Firefox он выглядит нормально.
Любые предложения?
Во-первых, двигаться def("DOMPDF_UNICODE_ENABLED", true);
выше, чем требуется, так как def
Функция, включенная в dompdf, определяет константу, только если она не существует. Когда вы включаете dompdf_config.inc.php, эта константа будет установлена в это время. Также используйте define
вместо.
Во-вторых, вам нужен другой шрифт. Шрифты DejaVu, включенные в dompdf, не поддерживают CJK. Для обзора прочитайте мой ответ на Dompdf и установить другое семейство шрифтов.
Если у вас нет шрифта, попробуйте поискать Светлячок Сунг. Какой бы шрифт вы ни решили использовать, он должен быть TTF, чтобы dompdf мог его использовать.
Вот пример использования Firefly Sung с помощью правила CSS @ font-face, установка не требуется:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
@font-face {
font-family: 'Firefly Sung';
font-style: normal;
font-weight: 400;
src: url(http://eclecticgeek.com/dompdf/fonts/cjk/fireflysung.ttf) format('truetype');
}
* {
font-family: Firefly Sung, DejaVu Sans, sans-serif;
}
</style>
</head>
<body>
<div>忠烈祠</div>
</body>
</html>
Других решений пока нет …