There are also open source Java libraries that can create PDF documents e.g. https://github.com/flyingsaucerproject/flyingsaucer You can then create an XHTML page and parse that to PDF. This will however require some work to write your XHTML and to implement the Java libraries.
You could check out the Aspose PDF Java library. It's probably the same one Appronto uses in their module, but perhaps you can build what you're looking for yourself.
Keep in mind that this library also has a licensing fee.
I have used it myself in the past and built a PDF generation module where a pre-defined PDF document was filled with data from a Mendix app and it worked perfectly. The library is easy enough to understand and implement.
We use the Docmosis Cloud service (https://www.docmosis.com/products/cloud.html) but you could use their Java library too. It is way more advanced than Aspose, however Docmosis does not support the wide range of document types as Aspose does.