Я пытаюсь создать 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-файл показывает только квадраты, когда я открываю его с помощью хром или Adobe Reader, но он выглядит нормально в Mozilla firefox.
Любые предложения?
Сначала переместите def("DOMPDF_UNICODE_ENABLED", true);
выше требования, поскольку функция def
включенная в dompdf, определяет константу, если она не существует. Когда вы включите dompdf_config.inc.php, эта константа будет установлена в это время. Кроме того, вместо этого используйте define
.
Во-вторых, вам нужен другой шрифт. Шрифты DejaVu, включенные в dompdf, не поддерживают CJK. Для обзора прочитайте мой ответ на Dompdf и установите другое семейство шрифтов .
Если у вас в настоящее время нет шрифта, вы можете попробовать Firefly Sung . Независимо от того, какой шрифт вы решите использовать, должен быть 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>