В этой статье мы рассмотрим решение задачи генерации файла в формате PDF из данных, введенных пользователем в форму, созданную модулем Webform, наложение этих данных на заранее подготовленную подложку и отправку на почту пользователю, заполнившему форму.
Нам понадобятся следующие модули:
- Webform
- Views
- Views PDF
- Rules
- Webform Rules
- Mimemail
и библиотеки
- tcpdf
- fpdi
1. Устанавливаем необходимые модули.
2. Кладем необходимые библиотеки в /sites/all/libraries.
3. Создаем форму с необходимыми полями.
4. Создаем новый вьюс.
В качестве типа сущности для отображения выбираем “Отправленные формы”. Страница и блок нам не понадобятся, поэтому соответствующие галочки можно снять.
На странице редактирования вьюса создаем дисплей типа PDF Page.
В поля добавляем “Webform submission data: Значение” для каждого поля, заполняемого пользователем
В поле Webform node вводим nid вебформы, в Component data выбираем поле, заполняемое пользователем.
В качестве контекстного фильтра используем Отправленные формы: Sid. Если значения нет в URL, то выводим “Страница не найдена”.
Теперь необходимо добавить PDF файл, который будет являться подложкой, на которой будут размещаться введенные пользователем данные, и расположить эти данные на странице.
Для этого в нашем вьюсе переходим в настройки отображения PDF Fields
В поле “Upload New Template File” загружаем PDF файл и применяем настройки. После этого опять открываем это же окно и в Template PDF выбираем загруженный файл.
Далее необходимо в этом же окне пройтись по всем добавленным ранее полям и указать им позиционирование на листе и настройки шрифта.
5. Теперь необходимо настроить правило, которое будет при отправке формы создавать новый файл и отправлять его по почте.
Переходим в админку модуля Rules и создаем новое правило.
В качестве события выбираем “After a webform has been submitted”
В качестве действия сначала необходимо выбрать Save PDF as file on server, где нужно указать вьюс, созданный ранее, в аргументы передать [data:sid] и в STORE PATH указать путь, по которому будут храниться сгенерированные файлы, например sites/default/files/[data:sid].pdf
Вторым действием должен быть Send HTML e-mail, у которого в поле ATTACHMENTS нужно указать путь к сгенерированному файлу, например sites/default/files/[data:sid].pdf. Все остальные поля этого действия заполняются в зависимости от требований к оформлению письма.
Комментарии
Здравствуйте,благодарю за статью. Не подскажите как сделать вывод русского языка? В данный момент выводит знаки вопроса,вместо русского языка.
Здравствуйте! У меня такая же проблема.
Ошибка "Warning: require_once(sites/all/libraries/tcpdf/tcpdf.php")
Но в папке с этой библиотекой такого файла нет изначально.
Коллега, огромное спасибо Вам за столь полезную статью! Но, кажется, то ли лыжи не едут, то ли я ... Дело в том, что дойдя до момента создания вьюса, я встретился со следующей ситуацией: когда добавляю дисплей типа PDF Page, в ответ получаю полностью пустую страницу, а не страницу конфигурации создаваемого дисплея. Складивается такое ощущение, что что-то не донастроено. Возникает вопрос: а не требуют ли каких либо "тонкостей" библиотеки tcpdf и fpdi? Спасибо!