You're right, I think merged a few things together when writing the comment. What I meant is that (if you ignore PrinceXML and focus on FOSS) you're down to 3 options:
- wkhtmltopdf
- weasyprint
- (headless) chromium with puppeteer et al.
The first one I found to be unreliable, the second one is super slow and the third can be annoying to work with.