Задача автоматического создания файлов часто встает перед web- разработчиками, в частности в сфере разработки платформенных решений для транспорта. Для упрощения процесса формирования документов существует несколько библиотек для языка PHP. В статье приведен сравнительный анализ наиболее актуальных на данный момент библиотек для формирования документов популярных форматов.
Ключевые слова: PHP, библиотеки PHP, автоматизация, PHPword, PHPstamp.
На сегодняшний день существует множество инструментов в области веб-разработки. Регулярно появляются новые Фреймворки. Но есть и такие языки, которые пользуются сумасшедшей популярностью свыше десяти лет. Яркий тому пример — PHP. Популярности языка способствовало то, что по его изучению написано множество качественной литературы. Согласно данным исследования австрийской консалтинговой компании Q-Success 79,2 % всех сайтов в сети интернет написаны на языке PHP [1, с. 15]. Разработчики не стоят на месте, и в ноябре 2020 года состоялся релиз PHP версии 8. Этот релиз кардинально поменял язык. Код стал быстрее, надёжнее, и писать его стало намного приятнее. Еще одним фактором популярности PHP является обширный выбор библиотек для решения широкого круга задач, встающих перед web- разработчиками каждый день.
Одной из таких задач является формирование различного рода документов, печатных форм, справок определенной формы с внесенными пользователем данными и их дальнейшая выгрузка печати. Существуют различные решения для создания документов. Разработаны несколько библиотек, написанных на языке JavaScript, например, библиотеки jsFile и html-docx-js. Сейчас эти библиотеки утратили свою актуальность, так как были разработаны более пяти лет назад и с того времени не поддерживаются разработчиками, вследствие чего у разработчиков возникают проблемы с интеграцией решений написанных при помощи данных библиотек. В связи с этим многие разработчики отдают предпочтение решениям, написанным на языке PHP, так как данный язык располагает необходимым инструментарием. В данной статье произведен сравнительный анализ наиболее часто используемых, свободно распространяемых библиотек для формирования документов PHPWord, PHPStamp с целью нахождения наиболее оптимального решения.
PHPWord — это библиотека, написанная на чистом PHP, которая предоставляет набор классов для записи и чтения из файлов различных форматов документов [2].
Релиз библиотеки PHPWord состоялся в 2010 году. Библиотека была написана для актуальной на тот момент версии PHP 5.4.4. PHPWord поддерживается разработчиками и постоянно дорабатывается. Актуальная версия 0.18.1 от 8 марта 2021 года. Текущая версия PHPWord поддерживает форматы *.doc, *.docx, *.odf, *.rtf.
Библиотека PHPWord, обладает обширным функционалом, который в значительной степени передает все особенность текстового процессора Microsoft Word. Библиотекой предусмотрено создание разделов документа, поддержка книжной и альбомной ориентации, добавление верхнего и нижнего колонтитулов и нумерация страниц. Есть возможность установки типа, размера и стиля шрифта. PHPWord позволяет работать с таблицами, изображениями и различными видами диаграмм (круговые и кольцевые диаграммы, столбцовые диаграммы, диаграммы рассеяния). К плюсам данной библиотеки можно отнести ее свободное распространение, поддержку кодировки UTF-8 с использованием символов кириллицы, а также наличие подробной документации по данной библиотеке. Среди минусов разработчики отмечают большие временные затраты на создание шаблона документа и большой объем кода.
Библиотека PHPstamp . Рассмотрим еще один шаблонизатор офисных документов, основанных на XML, PHPstamp. Так же, как и PHPword, библиотека написана на чистом PHP и для своей работы использует стандартные для средства, а именно DOMDocument и XSL [3]. Используется для генерации шаблона документа формата (*.docx) для многократного использования PHPstamp. Релиз версии 0.1 состоялся 3 апреля 2017 года. Последняя версия 0.2.3 датирована 28 июля 2019 года. Для корректной работы библиотеки необходимы модули Zip, DOM и XSL. Поддерживаются версии PHP, начиная с версии 5.3. Из-за прекращения поддержки разработчиками PHPstamp может работать некорректно на PHP 8.
Функционал библиотеки позволяет работать со шрифтами и стилями текста, изображениями и таблицами. Поддерживается только формат *.docx.
К плюсам данной библиотеки можно отнести её простоту и лаконичность в написании кода, а также высокую скорость генерации документов, которая достигается за счет правильно реализованного кэширования. Полученный шаблон кэшируется в файловой системе, поэтому последующие его вызовы будут максимально быстрыми.
К минусам библиотеки можно отнести ограниченный функционал и завершение поддержки разработчиками.
Далее приведено сравнение библиотек PHPWord и PHPstamp по приведенным выше критериям.
Простота использования. Установка PHPWord и PHPstamp производится через Composer. Функционал обеих библиотек интуитивно понятен. Однако для функционирования PHPWord необходима установка большого числа модулей. Библиотека PHPWord считается гораздо более сложной в освоении, но данный факт смягчается наличием хорошо проработанной документации.
Наличие документации. Как было отмечено ранее, PHPWord обладает отлично прописанной документацией с множеством примеров использования кода. Существует множество обучающих ресурсов и тематических статей. Документация PHPstamp не столь всеобъемлющая и проработанная.
Потребность в системных ресурсах . И PHPWord, и PHPstamp хорошо оптимизированы. Для работы с небольшими файлами лучше подходит библиотека PHPstamp, результаты нагрузочного тестирования показывают меньшее потребление памяти и более быстрое время выполнения скрипта. Но при этом стоит отметить, что PHPstamp не предназначена для генерации файлов большого объема.
Функциональные возможности. Функционал PHPWord обширнее, нежели функционал PHPstamp. PHPWord работает с большим количеством расширений и позволяет создавать шаблоны документов со сложной структурой.
Подводя итоги сравнения можно сказать, что обе библиотеки обладают необходимыми инструментами для формирования документов. Главное отличие заключается в том, что PHPWord больше подходит для формирования документов со сложной структурой. Для формирования простых документов небольшого объема лучше подойдет библиотека PHPstamp, за счет меньшего объема потребляемых ресурсов и высокой скорости работы.
Литература:
- Локхарт Джош Современный PHP. Новые возможности и передовой опыт; ДМК Пресс — М., 2020. — 304 c
- Библиотека PHPWord: основные возможности: сайт. — URL: http://docs.mirocow.com/doku.php?id=php:docx_doc (дата обращения: 07.04.2021). — Текст: электронный.
- PHPStamp — честная генерация DOCX документов из шаблона: сайт. — URL: https://habr.com/ru/post/244421/ (дата обращения: 9.04.2021). — Текст: электронный.