Если «бесплатный» - это ваш самый важный критерий, тогда wkhtmltopdf - ваш лучший выбор. Он поддерживает такие вещи, как обложки, ток, колонтитулы и разделы. В зависимости от того, насколько экзотичным будет макет вашего документа, вы, скорее всего, столкнетесь с некоторыми проблемами, связанными с разрывом страниц, но с небольшими изменениями все будет в порядке.
Я уже некоторое время использую wkhtmltopdf, с некоторыми довольно сложными документами (с диаграммами javascript, таблицами, изображениями svg и т. Д.), И у меня не было слишком много проблем.
Убедитесь, что вы используете статическую версию wkhtmltopdf, поскольку это единственная версия, которая поддерживает отображение страницы оглавления.