Генерация PDF без PHP
В этом посте я расскажу, как быстро сгенерировать pdf файлы на основе данных из БД. При этом мы не будем использовать zf, php и другие технологии веб-разреботки. Мы даже не напишем ни строчки кода.
Задача
Имеется произвольная БД, в таблицах которой хранятся нужные нам данные. На основе этих данных нужно сгенерировать множество PDF-файлов. Есть два пути. Первый путь – это подгружать данные в php, создавать объект pdf через одну из библиотек и генерировать их практически в ручном режиме.
Решение
Я уже думал так и сделать, когда придумал второй способ. Схематично он выглядит так:
MySQL -> csv -> xls —(слияние doc-шаблона с xls)–> печать -> doPdf -> несколько pdf -> слияние pdf в одну -> расшепление pdf на по страницам -> множество pdf-файлов
По шагам это будет выглядеть так:
1. Экспортируем нашу таблицу с помощью PhpMyAdmin в csv формат
2. В Excel открываем csv и сохраняем его в xls. Первая строка = название колонок.
3. Ставим программку doPdf, которая позволит “печатать” из Word в Pdf файлы.
4. В Word создаём шаблон нашей будущей pdf-ки. Рисуем обрамление, фон и т.д.
5. С помошью мастера слияние (Сервис->Письма и рассылки->Слияние) подключаем наш xls файл как источник данных (т.н. список), фильтруем записи по полям, и готовим документ.
6. Сервис->Письма и рассылки->Показать панель инструментов слияния
7. На панели кликаем на иконку “Слияние при печати” и печатаем документы на принтере doPdf по частям (не более 100 страниц), а то если больше 100, то он генерит невалидную pdf. Если у вас меньше сотни, можете пропустить следующий шаг.
8. Генеримpdf для второй и n-ой сотни страниц (аналогично п.7.).
9. Делаем слияние получившихся pdf с помщью программы Vertex PDF Splitter and Merger 4.0 в один файл.
10. Делаем расшепление получившийся pdf с помощью программы CoolUtils PdfSplitter.
11. Всё готово.
А как же автоматизация процесса? =)
Ну если это надо делать много и часто, то увы такой способ – не лучший, и всё-таки придётся кодить 🙂
В pma ведь есть экспорт в PDF, к чему такие сложности?
Есть, но нужен был кастомный шаблон.