I think this would be better off in the Coding or Web forum.

But just in case it applies, my old app used the older report method where we have a template file which is HTML. This template file is read and a simple bit of code replaces the key words with items from the SQL system and then this final .HTM file is sent off to be printed.

Cheap, flexible and has worked well in over a decade of use.
Bob