@aljo222
В процессе обучения веб-разработке

Как генерировать красивый PDF с помощью PHP?

Здравствуйте!

На сайте юзером заполняется анкета и после прохождения анкетирования генерируется PDF с помощью библиотеки FPDF + html2PDF + плагин WriteTag.
Проблема в том, что появляются какие-то отступы ненужные, то шрифт вроде указан явно, а меняется в PDF на другой. Короче вариант далеко не презентабельный. А намучились с ним значительно.

Хотелось бы узнать, у кого есть большой опыт, какой библиотекой лучше пользоваться? Или может есть варианты попроще и получше? Например мне предложили генерировать PDF во фронте из скрина страницы с помощью jsPDF
  • Вопрос задан
  • 2413 просмотров
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
TL;DR: Если нужно точное совпадение с хтмл шаблоном - только хеадлесс хром, остальное достаточно сильно отличается от оригинала, в силу ряда проблем.

Сталкивался ровно с такой же задачей пару раз, нормальных вариантов на самом деле всего 2:
генерить на фронте через хтмл2пдф, или подобные библиотеки, работающие через канвас,
или на бэке через хеадлесс хром.

Естественно оба со своими нюансами. В первом случае минус в том что пдф по сути будет набором картинок скринов, со всеми вытекающими, типа разных размеров экрана и невозможности выделить например текст в готовом пдф.
Во втором - надо ставить хедлес хром на сервер и соответственно из бэка отдавать ему сгенеренный хтмл, что несет свои трудности и приколы, зато на 99,9% совпадает с тем что вы отправляете на печать из хрома, и отладка и подгонка хтмл под формат в разы проще и удобнее. Кроме того, использование стилей и медиа запросов для печати открывает невероятную гибкость в плане работы с готовыми шаблонами (автонумерация, поля, колонтитулы етц). А, и забыл киллер фичу - оно выполняет жс, то есть если есть графики или какие-то элементы, выводимые через жс - то только хром, других вариантов просто нет.

Что касается других библиотек (mpdf, FPDF, wkhtmltopdf) - все они сильно "плавают" в отличие от хрома, многие вещи в них просто невозможны, кроме того у некоторых есть хронические проблемы со шрифтами и кодировками... Возможно за последние 3 года с тех пор как я их пробовал что-то изменилось, но думаю часть проблем все равно осталась.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Самый правильный путь генерация не на основе html а с нуля
Посмотрите сюда https://habr.com/ru/post/31438/

upd https://stackoverflow.com/questions/7364/edit-pdf-...

Для вас есть 2 пути :
Создать шаблон pdf загрузить его и четко по месту разместить текст
Второй вариант это с 0 сформировать весь репорт.

В любом случае рабочий процесс следующий: дизайнер отрисовывает макет, а вы вычисляете размеры плейсхолдеров и заполняете их в коде.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Ещё вариант - это wkhtmltox (wkhtmltopdf) и обертки для php под него. По сути это движок webkit, который генерит pdf. На вход ему даётся html - соответсвенно почти всё из html+css там можно использовать. Бывают тонкости, например, с многостраничными таблицами, но попробовать я рекомендую.
Ответ написан
nefone
@nefone
Junior PHP разработчик
Использовать библиотеки заточенные под работу с PDF из PHP:
FPDF
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы