Сниппет makePDF - для генерации PDF

Накидал небольшой сниппет на базе библиотеки mpdf для различных случаев генерации pdf-файлов.
Позволяет генерировать пдф из переданного html, адреса страницы (лучше передавать версию для печати), массива $data либо строки из базы данных. При этом для шаблона используется, при необходимости, заданный чанк. Может сохранять в файлы, отдавать в браузер либо использоваться для создания прикрепленных файлов для FormLister через prepareProcess.

Примеры вызовов:
[[makePDF? &html=`<html><body>hello world!</body></html>`]]
[[makePDF? &id=`5` &tpl=`chunkName`]]
[[makePDF? &id=`10` &table=`mytable` &idField=`pid` &tpl=`chunkName`]]
[[makePDF? &page=`25`]]
[[makePDF? &page=`test/test.html?print` &flag=`F` &custom_path=`assets/files/myfolder/`]]

Для FormLister (например, нужно по переданным данным сформировать и отправить платежку)
$attachFiles = $modx->runSnippet("makePDF", array('action' => 'FormLister', 'data' => $pfd_data, 'tpl' => 'zajavkaReportTpl', 'folder_name' => 'zajavka'));
if (is_array($attachFiles)) {
    $FormLister->config->setConfig(array('attachFiles' => $attachFiles));
}


Прим. Для передачи потока в браузер страница должна иметь тип application/pdf и не выводить ничего кроме данного сниппета.

8 комментариев

avatar
Неплохой сниппет. Нужно его в репозитарий.
Плюс немного расписать лучше параметры, примеры и добавить документацию в docs.evo.im
avatar
Все параметры расписаны :)
avatar
Хорошая штука, спасибо. Во многих случаях требуется, теперь готовое есть.
avatar
Непонятно, от чего зависит, но не могу запустить на 1.4.4
Даже пример выдает одну и ту же ошибку
[[makePDF? &html=`<html><body>hello world!</body></html>` &flag=`S`]]

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 16384 bytes) in /home/.../manager/includes/document.parser.class.inc.php on line 1960
avatar
Вот это имеется?
avatar
Ну да, пример-то из кода его взял
avatar
Настройки в php.ini какие?
Навскидку — жрет же память как не в себя — возможно настройки самого сервера не рубят процессы php вовремя? Шаред хостинг?
avatar
Шаред.
Ставил и гиг — та же самая ботва, не может себе «tried to allocate 16384 bytes» — там сущие копейки в-общем, от 8 до 20 Кб
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.