Сниппет 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 и не выводить ничего кроме данного сниппета.

3 комментария

avatar
Неплохой сниппет. Нужно его в репозитарий.
Плюс немного расписать лучше параметры, примеры и добавить документацию в docs.evo.im
avatar
Все параметры расписаны :)
avatar
Хорошая штука, спасибо. Во многих случаях требуется, теперь готовое есть.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.