Создание PDF файлов из HTML кода в CodeIgniter

Создание PDF файлов из HTML кода в CodeIgniterВ текущем проекте, заказчик попросил сделать возможность создавать PDF файлы прямо на сервере из HTML кода. Весь сайт написан с использованием фреймворка CodeIgniter. Но встроенных средств преобразования HTML в PDF-формат я не нашел. Кроме того, обязательной была поддержка русского языка, так как сайт русскоязычный. Я начал поиски, подробнее внутри.

Поковыряв самые популярные библиотеки для создания PDF файлов, я обнаружил, что у большинства нет нормальной поддержки русского языка. Либо часть, либо весь текст превращается в кракозябры. Само собой, такой расклад меня не устраивал и я нашел тяжеловесную (почти 30 мегабайт, если не удалять лишнее), зато эффективную библиотеку для генерации файлов формата PDF. Называется mPDF, официальный сайт здесь. Для интеграции ее в CodeIgniter достаточно создать свой класс-библиотеку.

Итак, качаем mPDF и распаковываем архив. Внутри видим папку MPDF54 (поскольку я скачал версию 5.4), в которой куча файлов и других папок. Копируем эту директорию прямо в /application/libraries/. Не забудьте проверить, что у папок /ttfontdata/, /tmp/, /graph_cache/, которые находятся внутри папки с библиотекой, выставлены права 6ХХ или 7ХХ.

Теперь создадим новый файл в папке /application/libraries/. Назовем его, например, pdf_generator.php. И сделаем заготовку:

 

Наш класс будет генерировать PDF файлы в папке http://site.com/uploads/pdf/ с помощью функции, которая принимает имя файла и сам HTML код. В моем случае, в качестве HTML кода выступал контент редактируемых страниц из админ-панели сайта.

Дальше — проще! «Куда уж, проще?» — спросите вы. Но так и есть.

 

Теперь можно в любом месте контроллера вызвать нашу функцию генерации. Например, вот так:

 

В результате будет создан файл file1.pdf, в который запишется содержимое переменной $content.

Задавайте свои ответы.

Комментарии 8

  • mPDF не самая хорошая либа, весьма ограничена и не ест css норм.

  • А как быть, если есть графика?
    Если в хтмл есть тег img src — то при создании файла вместо них видно изображения крестика (нет рисунка).

  • А, нашел решение. Надо указывать абсолютный путь, относительный, почему то не работает…

    • Пожалуйста. У меня с графикой вроде относительный тоже работал. Хотя не помню уже.

  • Блин тема интересная….но как быть с различными системами вывода информациии и графики.? прописка картинок…-в моем случае..нужно копать пуху код…ладно…спасибо всеравно посотрим что и как…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *