Решение проблемы с генерацией PDF документов с использованием библиотеки dompdf при использовании Unicode - русских букв
Прислано: Freakachoo
вс, 08/11/2009 - 20:58
Итак я долго мучался с этой проблемой и наконец решил.
Но совесть не дала мне просто принять этот опыт не написать об этом в сообщество :)
Итак вот как я делал (ссылки на уже готовые - в конце статьи):
Берем модуль
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:
// Convert from UTF-8 to ISO 8859-1 and then to HTML entities 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
- Freakachoo's blog
- Для комментирования войдите или зарегистрируйтесь
А можно ли использовать это решение отдельно от Drupal-a?
Если да, то напишите пожалуйста для Drupal-непосвященных пример PHP-кода для генерации pdf-файла, скажем, с такого простого HTML-кода(файла):
<span style="font-family: Verdana;">Привет</span>
Хочется проверить как отображаются шрифты кроме Times.
- Для комментирования войдите или зарегистрируйтесь
Чудеса. У меня pdf'ка одна - вне зависимости от содержимого ноды:
- Для комментирования войдите или зарегистрируйтесь
Нашел файлик в исходнике по вашей ссылке sites/all/modules/print/lib/dompdf/list4.html :)
В общем - не работает!
update: нашел так источник - sites\all\modules\print\print.tpl.php
- Для комментирования войдите или зарегистрируйтесь
Как сделать так, чтобы символы — и пр. распознавались правильно? И чтоб слова не наезжали друг на друга.

- Для комментирования войдите или зарегистрируйтесь
Решение есть?
- Для комментирования войдите или зарегистрируйтесь
у меня нет.
- Для комментирования войдите или зарегистрируйтесь
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, но зато быстрый и кириллицу держит без проблем.
- Для комментирования войдите или зарегистрируйтесь
Я с подобной проблемой сталкивался, поменял шрифт и все нормально заработало
Удачи!
- Для комментирования войдите или зарегистрируйтесь
Я с подобной проблемой сталкивался, поменял шрифт и все нормально заработало
Удачи!
Не подскажите где меняется шрифт? Пробовал на странице admin/settings/print/pdf, не помогло
- Для комментирования войдите или зарегистрируйтесь





Комментарии