2013-08-12 6 views
1

Я использовал библиотеку DOMPDF в codeigniter для извлечения данных из mysql. Но есть некоторые поля в моей таблице на хинди (форма Unicode на хинди), когда я пытаюсь создать PDF для хинди-шрифтов, он не отображает правильную вещь. Пожалуйста, помогите мне выбраться отсюда.Шрифт Hindi с DOMPDF в Codeigniter

Вот мой контроллер

public function genrate_pdf($benef_detial,$count){ 
    $data['repo_result'] = $benef_detial; 
    $data['total_benif'] = $count; 
    $data['page_title'] = "Benificiary Details"; 
    $this->load->library('pdf'); 
    $html = utf8_decode($this->pdf->load_view('public_reports/pdf_view',$data)); 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->set_paper("a4", "landscape"); 
    $this->template->set_template('default'); 
    $this->pdf->render(); 
    $this->pdf->stream("public_reports/pdf_view.pdf"); } 

Я добавил мета тег

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

в pdf_view и в шаблоне также

Если я данные таблицы поля на английском языке, то работает но в случае хинди unicode он показывает результат, такой как

सिà¤,à¤-ठ° à ¥ OEà¤²à ¥ €

Пожалуйста, помогите мне.

Благодаря

+0

Какая версия dompdf? Вам понадобится v0.6.0, чтобы использовать шрифты хинди. – BrianS

ответ

0

Для того, чтобы корректно отображать хинди символы в формате PDF вам нужно проверить несколько вещей:

1. Убедитесь, что PHP использует MBstring (по умолчанию включено)

2. Убедитесь, что вы используете DOMPDF 0.6.0 или выше

3. Проверьте настройки

При использовании Dompdf 0.6.x установите DOMPDF_ENABLE_UNICODE в значение true. По умолчанию Dompdf 0.7.0 и выше включены.

Вам понадобится доступ на чтение и запись в каталог шрифтов и каталог кеша шрифтов. По умолчанию эти каталоги находятся в каталоге dompdf (dompdf/lib/fonts для обоих). В Dompdf 0.6.x это будут константы конфигурации DOMPDF_FONT_DIR и DOMPDF_FONT_CACHE. В Dompdf 0.7.0 и выше обязательно установите значение параметров fontDir и fontCache (например, $dompdf->set_option("fontDir", "/my/font/dir");).

Если вы загружаете шрифт через @font-face, убедитесь, что у вас также есть доступ для чтения/записи во временный каталог. В Dompdf 0.6.0 проверьте конфигурацию конфигурации DOMPDF_TEMP_DIR. В Dompdf 0.7.0 и выше установите параметр tempDir.

Также, если вы загружаете какие-либо ресурсы через HTTP, убедитесь, что включена удаленная загрузка ресурсов. В Dompdf 0.6.0 проверьте конфигурацию конфигурации DOMPDF_ENABLE_REMOTE. В Dompdf 0.7.0 и выше установите параметр isRemoteEnabled.

4. Загрузить опорный шрифт в DOMPDF

Самый простой и рекомендуемый метод загрузки шрифтов использует декларацию @font-face CSS.

На сегодняшний день самым простым способом начать пользоваться будет использование шрифтов Google, поскольку все, что вам нужно сделать, это ссылка на таблицу стилей.Для Hind font вы бы просто добавить следующую строку в ваш документ головы:

<link href="https://fonts.googleapis.com/css?family=Hind:400,700&amp;subset=devanagari,latin-ext" rel="stylesheet"> 

К сожалению Dompdf does not support numeric weights шрифтов. Так как Google определяет размер шрифта, вы не можете использовать его с Dompdf вплоть до 0.8.1. Вы можете взломать проблему, но самый простой способ - загрузить шрифты.

В вашем документе таблицы стилей:

@font-face { 
    font-family: Hind; 
    font-style: normal; 
    font-weight: normal; 
    src: url(http://example.com/hind.ttf) format('truetype'); 
} 

Примечание: Не забудьте define the various weights and styles вы хотите поддержать.

5. Установить атрибут font-family стиля для вашего текста к шрифту вы загрузили

В вашем стиле таблицы стилей документа соответствующего контейнер с соответствующим семейством шрифтов. Например, если вы хотите, чтобы весь документ, чтобы использовать шрифт можно просто добавить следующую строку в ваш документ таблицы стилей:

* { 
    font-family: Hind, DejaVu Sans, sans-serif; 
} 

Это все покрыто в Unicode How-to.

+0

Я пробовал, прежде всего, ничего не работает :( Можете ли вы добавить фрагмент кода для следующих точек: 4. Загрузите поддерживающий шрифт в dompdf 5.Установите атрибут стиля шрифта для вашего текста на загруженный вами шрифт – Jasmeen

+0

См. Отредактированный ответ с более подробной информацией. – BrianS

+0

Я нашел решение здесь: http://shishtpal.blogspot.in/2017/04/how-to-use-mangal-font-with-mpdf-php.html – Jasmeen

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