Генерация 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. Всё готово.

 

4 Comments

    1. Ну если это надо делать много и часто, то увы такой способ – не лучший, и всё-таки придётся кодить 🙂

  1. В pma ведь есть экспорт в PDF, к чему такие сложности?

    1. Есть, но нужен был кастомный шаблон.

Leave a Comment