2015-02-10 7 views
3

Я пытаюсь создать PDF, который будет содержать китайские символы, используя dompdf. Вот мой код:Генерация 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 показывать только квадраты, когда я открываю его с хромом или читателя самана, но это выглядит хорошо в Mozilla Firefox.

Любые санкции?

+0

https://github.com/barryvdh/laravel-dompdf/issues/79 см. Второй последний ответ ... может вам помочь .. –

+0

Спасибо за ответ, но я просмотрел все ответы, которые я нашел в google. Проблема с моим проектом заключалась в кодировании в текстовом редакторе (netbeans на этом этапе) –

ответ

1

Прежде всего, переместите def("DOMPDF_UNICODE_ENABLED", true); над требованием, поскольку функция def, включенная в dompdf, определяет константу, если она не существует. Когда вы включите dompdf_config.inc.php, эта константа будет установлена ​​в это время. Кроме того, вместо этого используйте define.

Во-вторых, вам нужен другой шрифт. Шрифты DejaVu, включенные в dompdf, не поддерживают CJK. Для обзора прочитайте мой ответ Dompdf and set different font-family.

Если вы в настоящее время не имеете шрифта, попробуйте поискать Firefly Sung. Независимо от того, какой шрифт вы решите использовать, должен быть TTF, чтобы dompdf мог его использовать.

Вот пример использования Firefly Sung через @ шрифт-слойного правила CSS, установка не требуется:

<!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>

+0

Я пробовал выше html с dompdf0.7, но все же символы в виде ящиков. Я тестирую в ubuntu 16.04 и PHP 7.0 с включенными всеми необходимыми расширениями. Что я делаю не так? – Suraj

+0

@Suraj Dompdf не включает поддержку всех символов из коробки. Установили ли вы шрифт, который поддерживает ваши персонажи? – BrianS

+0

Я использую точно такой же код выше. Я думаю, что это не требует никакой установки, поскольку шрифт src url является внешним. Пожалуйста посоветуй. – Suraj

Смежные вопросы