Итак я долго мучался с этой проблемой и наконец решил.
Но совесть не дала мне просто принять этот опыт не написать об этом в сообщество
Итак вот как я делал (ссылки на уже готовые - в конце статьи):
Берем модуль print версии 6.х-1.10.
Скачиваем dompdf в слегка переработанной версии (мне пришлось соединить между собой 2 сборки - dompdf 0.6 - альфа 2 и где-то кем-то сделанную версию с русскими шрифтами), что получилось выкладываю сюда.
Кладем dompdf в папку
/lib
модуля print (как того и приписывает инструкция).
Далее
Берем в модуле print (версию не перепутайте - 6.х-1.10.) файл: print/print_pdf/print_pdf.pages.inc и закомментируем следующие строки:
с №146 по №161:
if (function_exists('utf8_decode')) {
$html = utf8_decode($html);
}
// iconv fails silently when it encounters something that it doesn't know, so don't use it
// else if (function_exists('iconv')) {
// $html = iconv('UTF-8', 'ISO-8859-1', $html);
// }
elseif (function_exists('mb_convert_encoding')) {
$html = mb_convert_encoding($html, 'ISO-8859-1', 'UTF-8');
}
elseif (function_exists('recode_string')) {
$html = recode_string('UTF-8..ISO_8859-1', $html);
}
$html = htmlspecialchars_decode(htmlentities($html, ENT_NOQUOTES, 'ISO-8859-1'), ENT_NOQUOTES);
Ибо они поганят всю кодировку. (конечно я может где что лишнее закомментировал... но однако у меня заработало.
Далее
в dompdf - файл dompdf_config.inc.php
строка №161, параметр DOMPDF_UNICODE_ENABLED установить в true:
(должно стать так)
Вот кажется и все
Так что вот пользуйтесь и радуйтесь. Найдете баги - пишите.
(все необходимое прилагаю)
P.S. файлы почему-то так и не прикрепился к статье (думаю что из-за таймаута), поэтому даю ссылку на внешнее хранилище:
dompdf-0.6-alfa2_plus_unicode
Комментарии
А можно ли использовать это решение отдельно от Drupal-a?
Если да, то напишите пожалуйста для Drupal-непосвященных пример PHP-кода для генерации pdf-файла, скажем, с такого простого HTML-кода(файла):
Хочется проверить как отображаются шрифты кроме Times.
Чудеса. У меня pdf'ка одна - вне зависимости от содержимого ноды:
Нашел файлик в исходнике по вашей ссылке sites/all/modules/print/lib/dompdf/list4.html
В общем - не работает!
update: нашел так источник - sites\all\modules\print\print.tpl.php
Как сделать так, чтобы символы — и пр. распознавались правильно? И чтоб слова не наезжали друг на друга.
Решение есть?
у меня нет.
Я с подобной проблемой сталкивался, поменял шрифт и все нормально заработало
Удачи!
Не подскажите где меняется шрифт? Пробовал на странице admin/settings/print/pdf, не помогло
Freakachoo, с PDF понятно, а отправку по e-mail пробовали? У меня присылает письма в ISO-8859-1. Остальные модули нормально шлют. Что может быть?
Да, действительно Dompdf, представленная здесь, работает с рус. шрифтами. Но, следующая бага: весь текст разлазится за границы указанного (A4) формата, иногда абзацы наезжают друг на друга.
Если скачать dompdf_0-6-0_beta1.zip с сайта разработчика, копирнуть в неё шрифты из представленной в этом топике сборки и подправить dompdf_config.inc.php – наезды уходят, всё в рамках приличия.
А вот как подружить это всё с CSS – на странице модуля print заявлен "full CSS support" – неизвестно.
На print-6.x-1.12 эти хаки не действуют: кирилика выводится знаками вопроса. Что со шриятами из сборки топикстартера, что без. Перед этим висит больше минуты.
Заявленной поддержки CSS, ради которой пробовал dompdf, я так и не добился: помещал стили и в print_pdf.tpl.php, и во внешний файл.
tcpdf хоть и не поддерживает css, но зато быстрый и кириллицу держит без проблем.
решение работает, спасибо.
использую версию print 1.19 + dompdf 0.6.0 beta 3 + набор русских шрифтов, откуда-то скачанных
Шрифты прописываются в /sites/all/modules/print/lib/dompdf/lib/fonts/dompdf_font_family_cache.dist.php
В формате
'sans-serif' =>
array (
'normal' => DOMPDF_FONT_DIR . 'times',
'bold' => DOMPDF_FONT_DIR . 'timesbd',
'italic' => DOMPDF_FONT_DIR . 'timesi',
'bold_italic' => DOMPDF_FONT_DIR . 'timesbi',
),
Здесь я заменяю шрифт sans-serif на мои кастомные times. Сами эти шрифты лежат тутже в форматах aam, ttf, ufm