Модуль для генерации .docx, .xlsx из шаблонов на PHP

Цена договорная
16 июля 2020, 13:28 • 7 откликов • 54 просмотра
Разработать модуль для генерации .docx, .xlsx файлов из шаблонов Word и Excel на PHP.

Функциональность:


Вызывается .php скрипт с $_GET (или $_POST) переменными:

$template - путь к файлу-шаблону на сервере(Word или Excel) относительно $_SERVER["DOCUMENT_ROOT"]

$data – массив подставляемых данных ключ – значение

$filename – если передан – путь для сохранения обработанного файла на сервере, относительно $_SERVER["DOCUMENT_ROOT"]

$stamp – путь к файлу на сервере: .png изображение печати организации для подстановки (может отсутствовать,относительно $_SERVER["DOCUMENT_ROOT"])

$sign – путь к файлу на сервере: .png изображение подписи для подстановки (может отсутствовать,относительно $_SERVER["DOCUMENT_ROOT"])

Скрипт возвращает соответствующий файл (.docx или .xlsx) с подставленными значениями сохраняя изначальное форматирование

* Дополнительный функционал
$pdf – флаг (если передан и true – выводим данные в pdf)


Принцип работы


1. Скрипт загружает шаблон $template

2. В загруженном шаблоне меняются вхождения {{ключ}} на соответствующее значения $массив[ключ]

2.1. Если значение $массив[ключ] – содержит <table> - значение форматируется:
2.1.3. В случае работы с .docx файлом - в таблицу
2.1.4.В случае .xlsx файлом – вставляются соответствующие строки со сдвигом остальных строк вниз

2.2 Если в шаблоне встречается строка $i то строка дублируется с подставлением данных из переменной TABLE (см. пример)

3. Ключи {{stamp}} и {{sign}}

3.1. Если передана переменная $stamp – в шаблон вставляется .png картинка на место ключа {{stamp}}, с соответствующим смещением (-50% вертикально и горизонтально относительно центра строки {{stamp}}); Если переменная не передана - {{stamp}} меняется на пустую строку.

3.2. Если передана переменная $sign – в шаблон вставляется .png картинка на место ключа {{sign}}, с соответствующим смещением (-50% вертикально и горизонтально относительно центрастроки{{sign}}); Если переменная не передана - {{sign}} меняется на пустую строку.

4. *Если передан флаг $pdf – шаблон конвертируется в .pdf

5. Если передан флаг $filename – шаблон сохраняется на сервере,в противном случае шаблон выводится в //output для скачивания


Технические требования


1. Решение должно быть запаковано в отдельную библиотеку, так чтобы папку с кодом можно было разместить на сервере, и сразу использовать функционал, не устанавливая зависимостей.

2. Версия PHP > 7

3. Кодировка входящих данных – utf-8

4. Решение подразумевает использование любых шаблонов в рамках ТЗ