Вообще генерировать HTML и рендерить в pdf это как раз самый распространенный путь, и он вполне себе ок. Шрифты будут ехать, стили тоже, все через боль и проверки :) У кого-то больше косяков и только примитивные теги, кто-то +/- все умеет.
Если PDF файлы большие, есть какие-то хитрые CSS - то имеет смысл посмотреть на
wkhtmltopdf.
Как раз был легаси проект, генерация PDF с таблицами на 30-50 страниц, и также страницы с текстом и изображениями + трансформациями, использовал изначально какую-то PHPшную либу.
День генерации отчетов был испытанием для всего сервака, документы генерировались мучительно долго, с ошибками (2-3 минуты на большой отчет). Когда мигрировал проверял 4-5 реализаций, 4 на phpшных либах разной степени древности, и вариант с wkhtmltopdf (C-шная консольная тулза). С wkhtmltopdf получил точный вариант по рендеру + 20тикратный выигрыш по скорости и какой-то по памяти (уже не помню сколько)
В целом если генерировать небольшие документы, либо без хитрых css - то можно phpшные библиотеки поискать, не раздувая стек, тот же fpdf.
Но в случае чего-то большого - рекомендовал бы wkhtmltopdf + сгенерированный html на вход и вызов его консольной части через exec