TCPDF – прекрасный класс, хорошо работает с кирилицей, прекрасно печатает на принтер.
Вот только в pdf почему-то не подхватывает стили на странице.
Пример.1
поэзия: на странице все строки по центру
причём открывается <p>
со стилем выравнивания по центру, затем идут <br />
строка<br />
строка<br />
строка</p>
И вот бага: в pdf-файле по центру выравнена только 1-ая строка. Все остальные выравнены по левому краю. И так – до следующего <p>
,
после которого картина повторяется.
Пример.2
На странице с обычным текстом употреблён text-indent, т.е. красная строка, как в книжках.
Каждый параграф начинается с этой красной строки.
И вот бага: в pdf-файле ни один из абзацев не начинается с красной строки.
Итого: стили страницы модулем tcpdf лично у меня не подхватываются.
Ставить один стиль на все страницы – это ж не школа с требованием единой униформы для всех школьников.
Ставить шаблон для каждой страницы – думаю, только из-за этой проблемы не стоит.
Проверено в версиях tcpdf: 4.8.038, 5.0.002
Комментарии
Копать нужно не tcpdf, а модуль Printer, e-mail and PDF versions.
Формат содержимого фильтруется/чистится в файле print_pdf.pages.inc
функцией theme_print_pdf_tcpdf_content.
непонятно, зачем удалять параграфы притом, что, например, стилёвку затем пускать в теге BR
<?php
// Since TCPDF's writeHTML is so bad with <p>, do everything possible to make it look nice
$matches[1] = preg_replace('!<(?:p(|\s+.*?)/?|/p)>!i', '<br$1 />', $matches[1]);
?>
т.е.
<p style="text-align:center;">
превратится в<br style="text-align:center;" />
Тоже имею проблему со стилями. У меня не работают padding, margin. Причем даже если их указать тупо в коде
<div style="padding:10px">text</div>
все равно не работают. Пробовал копаться к функции по информации в комментарии, но реакции никакой. Помогите пожалуйста. Любая информация приветствуется.
Пробовал еще mPDF. Там также проблемы с некоторыми стилями. Проблема именно в конвертере, а не модуле друпал. Вот инфа по теме http://stackoverflow.com/questions/3404095/problem-with-tcpdf-and-css
Для себя решение нашел следующее - использую таблицы и padding. См. ссылку.