Проблема DOMPDF с кириллическими символами
Я использую библиотеку DOMPDF для создания счета в PDF. Этот документ может быть на французском, русском или английском языках, но мне трудно печатать русские символы.
Сначала я попытался использовать кодировку UTF-8 и поместил тег meta
в начало HTML-страницы, которая будет преобразована:
< meta http-equiv = "Content-Type" content = "text/html; charset = utf-8" / >
Но это не сработало.
Затем я вставил этот тег meta
внутри тега BODY
, и это помогло решить проблему с французскими символами.
Но русские символы все еще не работают. Я также пытался преобразовать русские символы в объекты HTML, но это тоже не работает.
Я использую класс R & OS CPDF, а не PDFLib как бэкэнд.
Может ли кто-нибудь помочь?
Ответы
Ответ 1
Проблема заключается в использовании шрифтов по умолчанию, используемых dompdf (т.е. у него нет всех символов Юникода, до сих пор более 5000). Обычно arialuni.ttf - это то, что вам нужно. Вы можете скачать локализованную версию на http://chernev.ru/dompdf.rar {неработающая ссылка}
Обновлено: https://code.google.com/p/ipwn/downloads/detail?name=arialuni.ttf
Ответ 2
В принятом ответе ссылка сломана и содержит старую версию DOMPDF.
Для работы с символами Unicode в DOMPDF 0.6 у вас есть две альтернативы: используйте существующие шрифты или создайте свой собственный шрифт.
Фрагмент 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'
),
/* ... */
Фрагмент 2:
/* ... */
'arial' => array (
'normal' => DOMPDF_FONT_DIR . 'Arial',
'bold' => DOMPDF_FONT_DIR . 'Arial',
'italic' => DOMPDF_FONT_DIR . 'Arial',
'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */
Ответ 3
если вы будете использовать шрифт DejaVu, вы можете увидеть кириллические символы
Шрифты DejaVu TrueType были предварительно установлены, чтобы по умолчанию присвоить dompdf достойный охват символом Unicode. Чтобы использовать шрифты 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");
Ответ 4
Скачать arialuni.ttf
Запустите php load_font.php 'Arial' arialuni.ttf в каталоге dompdf, установите шрифт в arial
Это работает;)
Ответ 5
Для меня 4 шага выше не разрешили проблему.
Кроме того, dompdf конвертирует созданный pdf в ANSI (ISO)
Вам нужно отключить это на странице параметров
http://domain.com/admin/settings/print/pdf
Установите флажок Использовать режим юникода dompdf. Это заставит создавать файлы в UTF-8/Unicode.
Обратите внимание, что настройки веб-сайта по умолчанию переопределяют параметры в dompdf_config.inc.php.
Ответ 6
Отмечено, что проблема может быть в использовании css- reset, особенно
font:inherit;