Проблема DOMPDF с кириллицей - PullRequest
10 голосов
/ 13 июня 2009

Я использую библиотеку DOMPDF для создания счета в PDF. Этот документ может быть на французском, русском или английском, но у меня возникают проблемы с печатью русских символов.

Сначала я попытался использовать кодировку UTF-8 и поместил тег meta в заголовок страницы HTML для преобразования:

Но это не сработало.

Затем я вставил этот тег meta внутрь тега BODY, и это помогло решить проблему с французскими символами.

Но русские символы все еще не работают. Я также пытался преобразовать русские символы в объекты HTML, но это тоже не работает.

Я использую класс R & OS CPDF, а не PDFLib в качестве бэкэнда.

Может кто-нибудь помочь?

Ответы [ 6 ]

8 голосов
/ 06 октября 2011

В принятом ответе ссылка не работает и в ней содержалась старая версия DOMPDF.

Для работы с символами Юникода в DOMPDF 0.6 у вас есть две альтернативы: использовать существующие шрифты или создать свой собственный шрифт.

  • Использовать существующий шрифт (применяется для DOMPDF 0.6):

    1. Скачать архив и распаковать.
    2. Скопируйте извлеченные файлы в папку шрифтов dompdf /dompdf/lib/fonts/.
    3. Редактировать dompdf_font_family_cache.dist.php с фрагментом 1.
    4. В CSS используйте font-family: times;.

Фрагмент 1:

/* ... */
'times' => array (
    'normal' => DOMPDF_FONT_DIR . 'times',
    'bold' => DOMPDF_FONT_DIR . 'timesbd',
    'italic' => DOMPDF_FONT_DIR . 'timesi',
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
'times-roman' => array (
    'normal' => DOMPDF_FONT_DIR . 'times',
    'bold' => DOMPDF_FONT_DIR . 'timesbd',
    'italic' => DOMPDF_FONT_DIR . 'timesi',
    'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
/* ... */

  • Если вы хотите использовать свой собственный шрифт TTF (скажем, Arial.ttf):

    1. Прогон: ttf2afm -o Arial.afm Arial.ttf. (Я сделал это в Ubuntu.)
    2. Прогон: ttf2ufm -a -F Arial.ttf. (Я сделал это в Windows, используя exe из UFPDF , но, думаю, вы можете использовать /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe.)
    3. Копирование Arial.* файлов в /dompdf/lib/fonts/.
    4. Добавить в dompdf_font_family_cache.dist.php фрагмент 2.
    5. В CSS используйте font-family: arial;.

Фрагмент 2:

/* ... */
'arial' => array (
    'normal' => DOMPDF_FONT_DIR . 'Arial',
    'bold' => DOMPDF_FONT_DIR . 'Arial',
    'italic' => DOMPDF_FONT_DIR . 'Arial',
    'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */
7 голосов
/ 06 ноября 2009

Проблема со шрифтами, используемыми по умолчанию в dompdf (то есть в нем не все символы Юникода, то есть более 5000). Обычно arialuni.ttf - это то, что вам нужно. Вы можете скачать локализованную русскую версию на http://chernev.ru/dompdf.rar {неработающая ссылка}

Обновлена ​​ссылка: https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf

5 голосов
/ 08 ноября 2015

если вы будете использовать шрифт DejaVu, вы можете увидеть кириллические символы

Шрифты DejaVu TrueType были предварительно установлены, чтобы обеспечить dompdf приличное покрытие символов Юникода по умолчанию. Чтобы использовать шрифты DejaVu, обратитесь к шрифту в вашей таблице стилей, например, body {font-family: DejaVu Sans; } (для DejaVu Sans).

DOMPDF включает шрифт DejaVu по умолчанию

    $html = "<html><head><style>body { font-family: DejaVu Sans }</style>".
        "<body>А вот и кириллица</body>".
        "</head></html>";

    $dompdf = new \DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    echo file_put_contents('cyrillic.pdf', $dompdf->output());

Вы также можете установить изменение def для шрифта по умолчанию в dompdf_config.inc.php

def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
0 голосов
/ 19 октября 2016

отметил, что проблема может быть в использовании css-reset, особенно font:inherit;

0 голосов
/ 25 декабря 2014

Для меня 4 шага выше не решили проблему. Кроме того, dompdf конвертирует созданные PDF в ANSI (ISO) Вы должны отключить это на странице настроек http://domain.com/admin/settings/print/pdf

Установите флажок Использовать Unicode-режим dompdf. Это заставит создавать файлы в UTF-8 / Unicode.

Обратите внимание, что веб-настройки по умолчанию имеют приоритет над настройками в dompdf_config.inc.php

0 голосов
/ 30 декабря 2010

Скачать arialuni.ttf Запустите php load_font.php 'Arial' arialuni.ttf в каталоге dompdf, установите для шрифта значение arial Работает;)

...