Как генерировать красивый PDF с помощью PHP?
TL;DR:  Если нужно точное совпадение с хтмл шаблоном - только хеадлесс хром, остальное достаточно сильно отличается от оригинала, в силу ряда проблем. 

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

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

Что касается других библиотек (mpdf, FPDF, wkhtmltopdf) - все они сильно "плавают" в отличие от хрома, многие вещи в них просто невозможны, кроме того у некоторых есть хронические проблемы со шрифтами и кодировками... Возможно за последние 3 года с тех пор как я их пробовал что-то изменилось, но думаю часть проблем все равно осталась.
Использовать библиотеки заточенные под работу с PDF из PHP:
FPDF