I recently found out that a Norwegian government agency open sourced a micro service for generating PDF<p>I haven't used it, but it looks promising. You create templates based on html (Handlebars templates), which should make it easy to get started.<p><a href="https://github.com/navikt/pdfgen">https://github.com/navikt/pdfgen</a><p>It may be worth a look
We are using z3c.rml (<a href="https://github.com/zopefoundation/z3c.rml">https://github.com/zopefoundation/z3c.rml</a>) based on ReportLab. Layout is written in HTML-like XML and render performance is pretty good.
We use PDFlib, but we started using it a long time ago when there wasn't a lot of good open source options for building pdfs. PDFlib isn't open source or free. So far PDFlib has worked well and not been so expensive that we've needed to look for anything else.<p><a href="https://www.pdflib.com/" rel="nofollow">https://www.pdflib.com/</a>
Generating PDFs is a pain with most libraries, especially if the content is dynamic and should span multiple pages.<p>If you can use NodeJS on your backend, you might want to take a look at my PDF Library: <a href="https://github.com/DevLeoko/painless-pdf">https://github.com/DevLeoko/painless-pdf</a>
On the command line, pdftk.<p>If you are using Linux, it is probably a package in your distro.<p><a href="https://linux.die.net/man/1/pdftk" rel="nofollow">https://linux.die.net/man/1/pdftk</a><p>The homepage for the free (server) version.<p><a href="https://www.pdflabs.com/tools/pdftk-server/" rel="nofollow">https://www.pdflabs.com/tools/pdftk-server/</a>
ReactPDF (<a href="https://react-pdf.org/" rel="nofollow">https://react-pdf.org/</a>) if:
a) React is an option
b) you (can) use nodejs on backend
c) PDF preview is required on frontend (optional)
d) you need to generate same PDFs on backend (optional)
Workflow I've used previously:<p>1. Render html (easy with a templating language e.g. Jinja for Python)<p>2. Turn the html into a pdf (e.g. wkhtmltopdf in Python)
You need to at least tell us what your backend is.<p>Have you googled your question yet? Is there an issue with the solutions you did find? Why would you want an external service? You could be exposing private info using external services.