Генерация PDF на основе заполненных полей

Аватар пользователя POSTREALITY

Друзья, здравствуйте.

Не прошу конкретного "облизывания", но прошу указать направление "в какую сторону глядеть" по следующему вопросу.

Есть внутренний сайт на Drupal 7. Необходимо реализовать функционал, к примеру заполнения пользователем заявления на отпуск и вывода его сгенерированного PDF варианта на новую вкладку.
Попробовал побороть модуль WebForm, но как я понял он умеет только отправлять результат на email и в целом это не совсем пододящий модуль для решения моей задачи.

Требуется примерно следующее:
Создаю новый тип материала, в нём полностью убираю body и добавляю текстовые поля:
- ФИО
- Должность
- Департамент
- Дата начала отпуска
- Дата окончания отпуска
- Текущая дата

После заполнения данных полей, пользователь должен нажать кнопку "Generate PDF" и получить в новой вкладке браузера готовое заявление на отпуск (в котором к заранее созданному текстовому шаблону приписаны результаты его заполненных полей).

При этом сохранять всё это дело как новую статью не надо, чтобы не копить в базе данных мусор.
Как использовать модуль PDF using mPDF я разобрался, тоесть генерировать ПДФ-ки на основе ноды я научился, но хотелось бы иметь слегка другой функционал, чтобы пользователь в созданном для этих целей заполнял только несколько полей и не видел ни body, ни текстового шаблона, а на выходе получал готовое к подписи и распечатыванию заявление.

Прошу поверхностно описать, в сторону каких модулей ковырять, и как подготовить текстовый шаблон к которому будут дописываться результаты заполнения полей пользователями.

Большое всем спасибо!

Модули и темы:
Тип материала:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя itcrowd72
itcrowd72 3 недели назад

Я делал подобное для внутреннего проекта. Не сохранять такие материалы не получится, но можно их по крону удалять. Вы всё правильно описали. Создаем новый тип материала, делаем необходимые поля. Пользователь создает материал, сохраняет его. Вы, в кастомном модуле с помощью хука (не помню какого) добавляете вниз к системным кнопкам кнопку "Экспорт в PDF", а на её обработчик вешаем код собственно по генерации. Вы всё так и описали.

чтобы пользователь в созданном для этих целей заполнял только несколько полей и не видел ни body, ни текстового шаблона, а на выходе получал готовое к подписи и распечатыванию заявление.

Так и будет

---------------------------

А вообще, вам наверное будет проще сделать кастомную форму в своем модуле. Она будет открываться как обычная страница, пользователи будут её заполнять, а по итогу также получать PDF. Данные же никуда сохраняться не будут

0 Спасибо
Аватар пользователя POSTREALITY
POSTREALITY 3 недели назад

подскажите пожалуйста, а как Вы справились с тем, что текстовые поля всегда встают новой строкой?
К примеру, мне нужен такой результат:
Я, "текст и заполненного пользователем поля", прошу предоставить мне отпуск с "текст и заполненного пользователем поля" по "текст и заполненного пользователем поля".
Чтобы всё было в одну строку. Потому что сейчас у меня все текстовые поля становятся в новую строку.
Спасибо!

0 Спасибо
Аватар пользователя itcrowd72
itcrowd72 3 недели назад

Не понял вопроса :)
Я генерировал файлы на основе шаблона LibreOffice ODT. Т.е. подставлял в уже заготовленный файл-шаблон нужные значения

0 Спасибо
Аватар пользователя POSTREALITY
POSTREALITY 3 недели назад

Ух ты, а вот это уже что-то новенькое. Спасибо! Сейчас загуглю в эту сторону, если не разберусь, то попрошу у Вас чуть-чуть разжевать, если Вы не против!

0 Спасибо
Аватар пользователя POSTREALITY
POSTREALITY 3 недели назад

Друзья!
Всем спасибо за подсказки, но я пока что столкнулся и не могу разобраться с проблемой: Установил модуль "ODT Filler", прикрутил к нему библиотеку phpODT. Создал шаблон через LibreOffice, назначил его через "ODT Filler", подставил необходимые поля.
Файл он генерирует, это конечно очень хорошо, но, блин, в ISO-8859-1 кодировке :( Циферки показывает правильно, а вот Русский текст (тот что подставляется к шаблону из текстовых полей) превращается в кракозябры.
Вот сижу, воюю, но чего-то вообще не пойму откуда эти кракозябры появляются...

0 Спасибо
Аватар пользователя POSTREALITY
POSTREALITY 3 недели назад

Уф, разобрался с кракозябрами. Теперь, переходим к следующей стадии: как показать модулю "ODT Filler" генерировать не *.odt а *.pdf ))) Чую, тут всё ещё хлеще чем с кракозябрами :)

0 Спасибо
Аватар пользователя itcrowd72
itcrowd72 3 недели назад

Вероятно, никак) Генерить .odt, а потом конвертировать в .pdf

0 Спасибо
Аватар пользователя POSTREALITY
POSTREALITY 3 недели назад
itcrowd72 написал:
Вы, в кастомном модуле с помощью хука (не помню какого) добавляете вниз к системным кнопкам кнопку "Экспорт в PDF", а на её обработчик вешаем код собственно по генерации.

Но, судя по Вашему первому ответу, Вы всё-же как-то генерировали PDF-ки, не сложно ли Вам тогда описать логику работы Вашей системы? Просто смыслы Вашей и моей системы получается схожи (пользователь заполняет, в шаблон подставляется, на выходе - PDF). И шаблон у Вас как я понял тоже был ODT.

Спасибо!

0 Спасибо
Аватар пользователя itcrowd72
itcrowd72 3 недели назад

Отпишу в личку в ближайшее время.

0 Спасибо